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()
+ '''
+ }
}