This is an automated email from the ASF dual-hosted git repository. emilles pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 1972cee19fceae7ed0282b20d6cfcb0704da7542 Author: Eric Milles <[email protected]> AuthorDate: Tue Nov 2 12:01:32 2021 -0500 GROOVY-10310: STC: retain wildcard flag during diamond generics transfer --- .../groovy/transform/stc/StaticTypeCheckingVisitor.java | 1 + src/test/groovy/transform/stc/GenericsSTCTest.groovy | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) 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 e47de5d..4ab4407 100644 --- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java +++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java @@ -1123,6 +1123,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport { GenericsType gt = genericsTypes[i]; genericsTypes[i] = new GenericsType(gt.getType(), gt.getUpperBounds(), gt.getLowerBound()); + genericsTypes[i].setWildcard(gt.isWildcard()); // GROOVY-10310 } } target.setGenericsTypes(genericsTypes); diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy b/src/test/groovy/transform/stc/GenericsSTCTest.groovy index c9d4477..937c21c 100644 --- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy +++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy @@ -1038,6 +1038,23 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase { ''' } + // GROOVY-10310 + void testDiamondInferrenceFromConstructor21() { + assertScript ''' + @groovy.transform.TupleConstructor + class A<T> { + T f + } + class B<T> { + } + def <T> A<T> m(T t, B<? extends T> b_of_t) { + new A<>(t) + } + def x = 'x' + m(x, new B<>()) // Cannot call m(T,B<? extends T>) with arguments... + ''' + } + // GROOVY-10280 void testTypeArgumentPropagation() { assertScript '''
