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


The following commit(s) were added to refs/heads/master by this push:
     new 76f8556  GROOVY-10323: STC: graceful handling of duplicate type 
parameter name(s)
76f8556 is described below

commit 76f85565461822d8a7b5f4f7cd62b0e237aa0329
Author: Eric Milles <[email protected]>
AuthorDate: Sat Oct 30 12:19:00 2021 -0500

    GROOVY-10323: STC: graceful handling of duplicate type parameter name(s)
---
 .../transform/stc/StaticTypeCheckingVisitor.java   |  2 +-
 .../groovy/transform/stc/GenericsSTCTest.groovy    | 22 ++++++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

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 31ae6d1..a63feca 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -5358,7 +5358,7 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 
             // in case of "<T, U extends Type<T>>" we can learn about "T" from 
resolved "U"
             Map<GenericsTypeName, GenericsType> connections = 
Arrays.stream(methodGenericTypes)
-                    .collect(toMap(gt -> new GenericsTypeName(gt.getName()), 
Function.identity()));
+                    .collect(toMap(gt -> new GenericsTypeName(gt.getName()), 
gt -> gt, (v,x) -> v));
             extractGenericsConnectionsForSuperClassAndInterfaces(connections, 
resolvedPlaceholders);
         }
 
diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy 
b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
index e20c656..47c4d64 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -979,6 +979,28 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
         '''
     }
 
+    // GROOVY-10323
+    void testDiamondInferrenceFromConstructor17() {
+        assertScript '''
+            class C<T> {
+            }
+            def <T,T> T m(C<T> c) {
+            }
+            Number n = m(new C<>())
+        '''
+    }
+
+    @NotYetImplemented // GROOVY-10324
+    void testDiamondInferrenceFromConstructor18() {
+        assertScript '''
+            class C<T> {
+            }
+            def <X> X m(C<X> c) {
+            }
+            List<String> x = m(new C<>())
+        '''
+    }
+
     // GROOVY-10280
     void testTypeArgumentPropagation() {
         assertScript '''

Reply via email to