You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2017/01/26 05:31:23 UTC

[49/50] groovy git commit: GROOVY-8033: spread property calls on non-list collections fail STC in static methods (closes #476)

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 <sh...@gmail.com>
Authored: Wed Jan 4 12:26:37 2017 -0500
Committer: Shil Sinha <sh...@apache.org>
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()            
+        '''
+    }
 }