This is an automated email from the ASF dual-hosted git repository.

emilles pushed a commit to branch GROOVY_4_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_4_0_X by this push:
     new 088357b05e GROOVY-10765: STC: don't connect unresolved placeholder
088357b05e is described below

commit 088357b05ec0948854cf2444a73c784b11fabcf5
Author: Eric Milles <[email protected]>
AuthorDate: Thu Sep 22 10:38:18 2022 -0500

    GROOVY-10765: STC: don't connect unresolved placeholder
---
 .../groovy/transform/stc/StaticTypeCheckingSupport.java     |  3 ++-
 src/test/groovy/transform/stc/GenericsSTCTest.groovy        | 13 +++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index 9718f233a9..d935d6f81c 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -1787,7 +1787,8 @@ public abstract class StaticTypeCheckingSupport {
                     extractGenericsConnections(connections, 
ui.getUpperBounds(), upperBounds);
                 } else if (!isUnboundedWildcard(di)) {
                     ClassNode boundType = lowerBound != null ? lowerBound : 
upperBounds[0];
-                    if (boundType.isGenericsPlaceHolder()) { // GROOVY-9998
+                    if (boundType.isGenericsPlaceHolder() // GROOVY-9998
+                            && boundType != ui.getType()) { // GROOVY-10765
                         String placeholderName = boundType.getUnresolvedName();
                         ui = new GenericsType(ui.getType()); 
ui.setWildcard(true);
                         storeGenericsConnection(connections, placeholderName, 
ui);
diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy 
b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
index 0db423e791..1119c72ffc 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -1696,6 +1696,19 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase 
{
         '''
     }
 
+    // GROOVY-10765
+    void testAssignmentShouldWorkForParameterizedMap2() {
+        assertScript '''import java.util.function.BiFunction
+
+            def <X, Y, Z> Map<X, Z> transform(Map<X, Y> map, BiFunction<? 
super X, ? super Y, Z> transformer) {
+                map.collectEntries { k, v -> [k, transformer.apply(k, v)] }
+            }
+
+            Map<String, ? extends File> one = [:]
+            Map<String, Integer> two = transform(one) { k, v -> v.hashCode() }
+        '''
+    }
+
     // GROOVY-10222
     void testAssignmentShouldWorkForParameterizedType() {
         assertScript '''

Reply via email to