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 '''

Reply via email to