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']