GROOVY-8033: spread property calls on non-list collections fail STC in static methods (closes #476)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/65daac5a Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/65daac5a Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/65daac5a Branch: refs/heads/GROOVY_2_4_X Commit: 65daac5a11f6e03b8c96b32a9e8f8c916a4e2999 Parents: 922439b Author: Shil Sinha <[email protected]> Authored: Wed Jan 4 12:26:37 2017 -0500 Committer: Shil Sinha <[email protected]> Committed: Sun Jan 22 23:22:21 2017 -0500 ---------------------------------------------------------------------- .../transform/stc/StaticTypeCheckingVisitor.java | 1 + .../transform/stc/ArraysAndCollectionsSTCTest.groovy | 14 ++++++++++++++ 2 files changed, 15 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/65daac5a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java index 30916e7..036404d 100644 --- a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java +++ b/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java @@ -1373,6 +1373,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport { private ClassNode getTypeForSpreadExpression(ClassNode testClass, ClassNode objectExpressionType, PropertyExpression pexp) { if (!pexp.isSpreadSafe()) return null; MethodCallExpression mce = new MethodCallExpression(new VariableExpression("_", testClass), "iterator", ArgumentListExpression.EMPTY_ARGUMENTS); + mce.setImplicitThis(false); mce.visit(this); ClassNode callType = getType(mce); if (!implementsInterfaceOrIsSubclassOf(callType, Iterator_TYPE)) return null; http://git-wip-us.apache.org/repos/asf/groovy/blob/65daac5a/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy ---------------------------------------------------------------------- diff --git a/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy b/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy index a019f35..badff32 100644 --- a/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy +++ b/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy @@ -557,5 +557,19 @@ class ArraysAndCollectionsSTCTest extends StaticTypeCheckingTestCase { countIt([1,2,3])==3 ''' } + + // GROOVY-8033 + void testSetSpreadPropertyInStaticContext() { + assertScript ''' + class Foo { + String name + } + static List<String> meth() { + Set<Foo> foos = [new Foo(name: 'pls'), new Foo(name: 'bar')].toSet() + foos*.name + } + assert meth().toSet() == ['pls', 'bar'].toSet() + ''' + } }
