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":