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


The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
     new 06637b0d58 GROOVY-7506: STC: list literal argument for array-based 
setter
06637b0d58 is described below

commit 06637b0d58792026cb9ae550f83bafccb9770a46
Author: Eric Milles <eric.mil...@thomsonreuters.com>
AuthorDate: Thu Nov 30 17:11:29 2023 -0600

    GROOVY-7506: STC: list literal argument for array-based setter
    
    3_0_X backport
---
 .../codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java | 3 +++
 src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy | 9 ---------
 2 files changed, 3 insertions(+), 9 deletions(-)

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 ac9722e169..0f3ebee954 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1016,6 +1016,9 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
             for (MethodNode setter : setterInfo.setters) {
                 ClassNode lType = setterType.apply(setter);
                 ClassNode rType = getDeclaredOrInferredType(valueExpression);
+                if (lType.isArray() && valueExpression instanceof 
ListExpression) {
+                    rType = inferLoopElementType(rType).makeArray(); // 
GROOVY-7506
+                }
                 if (checkCompatibleAssignmentTypes(lType, rType, 
valueExpression, false)) {
                     methodTarget = setterCall.apply(castX(lType, 
valueExpression));
                     if (methodTarget != null) {
diff --git a/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy 
b/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy
index ff17db291e..5b37e25498 100644
--- a/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy
@@ -577,7 +577,6 @@ class ArraysAndCollectionsSTCTest extends 
StaticTypeCheckingTestCase {
     }
 
     // GROOVY-7506
-    @NotYetImplemented
     void testShouldAllowArrayAssignment6() {
         String pogo = '''
             class C {
@@ -588,14 +587,6 @@ class ArraysAndCollectionsSTCTest extends 
StaticTypeCheckingTestCase {
             }
         '''
 
-        assertScript pogo + '''
-            def list = ['foo','bar']
-
-            def c = new C()
-            c.p = list // implicit conversion
-            assert c.strings == ['foo','bar']
-        '''
-
         assertScript pogo + '''
             def c = new C()
             c.p = ['foo','bar']

Reply via email to