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/05/16 19:32:25 UTC

[groovy] 02/03: GROOVY-9963: resolve ctor call diamond for attribute/property expression

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

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

commit ec404abebb928a30cd27de69482ccb6bbe020832
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Mon May 16 14:13:34 2022 -0500

    GROOVY-9963: resolve ctor call diamond for attribute/property expression
---
 .../org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java   | 3 +++
 src/test/groovy/transform/stc/GenericsSTCTest.groovy                   | 2 +-
 2 files changed, 4 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 35f6cd29d4..ca216361da 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1472,6 +1472,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 461bcd0cae..2622f7303a 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -888,7 +888,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
         'Incompatible generic argument types. Cannot assign C<? extends java.lang.Object> to: C<D>'
     }
 
-    @NotYetImplemented // GROOVY-9963
+    // GROOVY-9963
     void testDiamondInferrenceFromConstructor10() {
         assertScript '''
             @groovy.transform.TupleConstructor(defaults=false)