This is an automated email from the ASF dual-hosted git repository. emilles pushed a commit to branch GROOVY_3_0_X in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 3321d1b8412bc875c519e261f4cb12b772cfe20b Author: Eric Milles <[email protected]> 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 7be2912..795b0ba 100644 --- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java +++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java @@ -5161,7 +5161,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 800ea5f..90e74f5 100644 --- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy +++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy @@ -285,16 +285,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()] + } + ''' } void testGroovy5154() {
