You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/09/22 15:54:39 UTC
[groovy] branch master updated: GROOVY-10765: STC: don't connect unresolved placeholder
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 ed5a0ca3ea GROOVY-10765: STC: don't connect unresolved placeholder
ed5a0ca3ea is described below
commit ed5a0ca3ea8ea06a0e3518d6cd73d540ac056777
Author: Eric Milles <er...@thomsonreuters.com>
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 3ed435e7dd..81423a2aec 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -1776,7 +1776,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 6b569a3e17..a857a51834 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 '''