You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2019/10/30 15:55:29 UTC
[groovy] 05/17: Check existence of `it` parameter
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 9cc64df932702086eafe213133a55f08798d623f
Author: Daniel.Sun <re...@hotmail.com>
AuthorDate: Tue Oct 29 10:26:13 2019 +0800
Check existence of `it` parameter
(cherry picked from commit b05f702424626914b7d2d44ea2eb04c953d5c8e7)
---
.../java/org/codehaus/groovy/ast/expr/ClosureExpression.java | 9 ++++++++-
.../codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java | 1 +
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ClosureExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ClosureExpression.java
index 5960e00..7df3fd1 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ClosureExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ClosureExpression.java
@@ -82,7 +82,14 @@ public class ClosureExpression extends Expression {
}
/**
- * @return true if one or more explicit parameters are supplied
+ * @return {@code true} if implicit {@code it} is supplied
+ */
+ public boolean hasItParameter() {
+ return null != parameters && 0 == parameters.length;
+ }
+
+ /**
+ * @return {@code true} if one or more explicit parameters are supplied
*/
public boolean isParameterSpecified() {
return parameters != null && parameters.length > 0;
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 bbf0cda..b6315bc 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1597,6 +1597,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
if (null != enclosingClosure) {
switch (objectExpression.getText()) {
case "it":
+ if (!enclosingClosure.getClosureExpression().hasItParameter()) break;
case "owner":
case "delegate":
case "thisObject":