You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2021/03/06 10:29:51 UTC
[groovy] branch master updated: GROOVY-9963: resolve ctor call
diamond for attribute/property expression
This is an automated email from the ASF dual-hosted git repository.
sunlan 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 2a27ee8 GROOVY-9963: resolve ctor call diamond for attribute/property expression
2a27ee8 is described below
commit 2a27ee8df05be086cfe60e41545d129328bfcacf
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Thu Mar 4 15:36:13 2021 -0600
GROOVY-9963: resolve ctor call diamond for attribute/property expression
---
.../groovy/transform/stc/StaticTypeCheckingVisitor.java | 3 +++
src/test/groovy/transform/stc/GenericsSTCTest.groovy | 14 ++++++++++++++
2 files changed, 17 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 1ef88a0..76247cc 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1433,6 +1433,9 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
Expression objectExpression = pexp.getObjectExpression();
ClassNode objectExpressionType = getType(objectExpression);
+ if (objectExpression instanceof ConstructorCallExpression) {
+ inferDiamondType((ConstructorCallExpression) objectExpression, objectExpressionType);
+ }
List<ClassNode> enclosingTypes = typeCheckingContext.getEnclosingClassNodes();
boolean staticOnlyAccess = isClassClassNodeWrappingConcreteType(objectExpressionType);
diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
index 4c28a82..f48b18d 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -325,6 +325,20 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
''', 'Incompatible generic argument types. Cannot assign java.util.HashSet <java.util.ArrayList> to: java.util.Set <List>'
}
+ // GROOVY-9963
+ void testDiamondInferrenceFromConstructor10() {
+ assertScript '''
+ @groovy.transform.TupleConstructor
+ class C<T> {
+ T p
+ }
+ static void m(String s) {
+ assert s.isEmpty()
+ }
+ m(new C<>("").p)
+ '''
+ }
+
void testLinkedListWithListArgument() {
assertScript '''
List<String> list = new LinkedList<String>(['1','2','3'])