You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2021/04/14 21:03:26 UTC
[groovy] 01/01: GROOVY-10036: STC: pass explicit type arguments of
extension method call
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY-10036
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 2e3ce52246e06fedb8584aeea2d4078ecb20b04e
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Wed Apr 14 15:53:14 2021 -0500
GROOVY-10036: STC: pass explicit type arguments of extension method call
---
.../transform/stc/StaticTypeCheckingVisitor.java | 2 +-
src/test/groovy/transform/stc/GenericsSTCTest.groovy | 19 +++++++++++++++----
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index e9fc99e..5daab43 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -5255,7 +5255,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
} else {
args.addExpression(arguments);
}
- return inferReturnTypeGenerics(receiver, dgm, args);
+ return inferReturnTypeGenerics(receiver, dgm, args, explicitTypeHints);
}
Map<GenericsTypeName, GenericsType> resolvedPlaceholders = resolvePlaceHoldersFromDeclaration(receiver, getDeclaringClass(method, arguments), method, method.isStatic());
resolvePlaceholdersFromExplicitTypeHints(method, explicitTypeHints, resolvedPlaceholders);
diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
index 5e010df..4d4ce4e 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -578,16 +578,27 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
''', 'Number'
}
- // GROOVY-9914
+ // GROOVY-9914, GROOVY-10036
void testAssignmentShouldWorkForParameterizedMap() {
assertScript '''
Map test(Map<String,String> one) {
- Map<String,Integer> two = one.collectEntries { k,v ->
- [(k): v.hashCode()]
- }
+ Map<String,Integer> two = one.collectEntries { k,v ->
+ [(k): v.hashCode()]
+ }
}
assert test(foo:'bar').containsKey('foo')
'''
+
+ assertScript '''
+ def list = ['foo','bar','baz']
+ @ASTTest(phase=INSTRUCTION_SELECTION, value={
+ def type = node.getNodeMetaData(INFERRED_TYPE)
+ assert type.toString(false) == 'java.util.Map <String, Object>'
+ })
+ def map = list.<String,Object,String>collectEntries {
+ [(it): it.hashCode()]
+ }
+ '''
}
// GROOVY-9555