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