You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/08/03 15:19:30 UTC

[groovy] branch master updated: GROOVY-10713: visit `catch` parameter and `for`-each parameter (no init)

This is an automated email from the ASF dual-hosted git repository.

emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new c23e7caf8b GROOVY-10713: visit `catch` parameter and `for`-each parameter (no init)
c23e7caf8b is described below

commit c23e7caf8b1d8c8e5a6b8f087b6db3be3ddde362
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Wed Aug 3 09:48:10 2022 -0500

    GROOVY-10713: visit `catch` parameter and `for`-each parameter (no init)
---
 .../groovy/ast/ClassCodeExpressionTransformer.java         |  8 +-------
 .../org/codehaus/groovy/ast/ClassCodeVisitorSupport.java   |  9 +++------
 .../java/org/codehaus/groovy/ast/CodeVisitorSupport.java   | 13 ++++++-------
 .../java/org/codehaus/groovy/ast/GroovyCodeVisitor.java    | 14 +++++++++++---
 4 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java b/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java
index 0073c54823..b267210525 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java
@@ -116,11 +116,7 @@ public abstract class ClassCodeExpressionTransformer extends ClassCodeVisitorSup
 
     @Override
     public void visitForLoop(final ForStatement stmt) {
-        Parameter variable = stmt.getVariable();
-        visitAnnotations(variable);
-        Expression init = variable.getInitialExpression();
-        if (init != null) variable.setInitialExpression(transform(init));
-
+        visitAnnotations(stmt.getVariable()); // "for(T x : y)" or "for(x in y)"
         stmt.setCollectionExpression(transform(stmt.getCollectionExpression()));
         stmt.getLoopBlock().visit(this);
     }
@@ -140,8 +136,6 @@ public abstract class ClassCodeExpressionTransformer extends ClassCodeVisitorSup
     @Override
     public void visitSwitch(final SwitchStatement stmt) {
         stmt.setExpression(transform(stmt.getExpression()));
-        afterSwitchConditionExpressionVisited(stmt);
-
         for (CaseStatement caseStatement : stmt.getCaseStatements()) {
             caseStatement.visit(this);
         }
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassCodeVisitorSupport.java b/src/main/java/org/codehaus/groovy/ast/ClassCodeVisitorSupport.java
index e6938f172d..083bae6389 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassCodeVisitorSupport.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassCodeVisitorSupport.java
@@ -39,7 +39,6 @@ import org.codehaus.groovy.ast.stmt.ThrowStatement;
 import org.codehaus.groovy.ast.stmt.TryCatchStatement;
 import org.codehaus.groovy.ast.stmt.WhileStatement;
 import org.codehaus.groovy.control.SourceUnit;
-import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
 import org.codehaus.groovy.syntax.SyntaxException;
 import org.codehaus.groovy.transform.ErrorCollecting;
 
@@ -191,6 +190,7 @@ public abstract class ClassCodeVisitorSupport extends CodeVisitorSupport impleme
     @Override
     public void visitCatchStatement(CatchStatement statement) {
         visitStatement(statement);
+        visitAnnotations(statement.getVariable());
         super.visitCatchStatement(statement);
     }
 
@@ -269,10 +269,7 @@ public abstract class ClassCodeVisitorSupport extends CodeVisitorSupport impleme
     protected abstract SourceUnit getSourceUnit();
 
     @Override
-    public void addError(String error, ASTNode node) {
-        SourceUnit source = getSourceUnit();
-        source.getErrorCollector().addErrorAndContinue(
-                new SyntaxErrorMessage(new SyntaxException(error + '\n', node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()), source)
-        );
+    public void addError(final String error, final ASTNode node) {
+        getSourceUnit().addErrorAndContinue(new SyntaxException(error + '\n', node));
     }
 }
diff --git a/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java b/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
index 542864e9ce..e8f93808c8 100644
--- a/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
+++ b/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
@@ -141,8 +141,8 @@ public abstract class CodeVisitorSupport implements GroovyCodeVisitor {
     }
 
     @Override
-    public void visitEmptyStatement(final EmptyStatement statement) {
-        // noop
+    public void visitCatchStatement(CatchStatement statement) {
+        statement.getCode().visit(this);
     }
 
     @Override
@@ -184,6 +184,10 @@ public abstract class CodeVisitorSupport implements GroovyCodeVisitor {
         statement.getExpression().visit(this);
     }
 
+    @Override
+    public void visitEmptyStatement(final EmptyStatement statement) {
+    }
+
     //--------------------------------------------------------------------------
 
     @Override
@@ -364,11 +368,6 @@ public abstract class CodeVisitorSupport implements GroovyCodeVisitor {
         visitListOfExpressions(expression.getValues());
     }
 
-    @Override
-    public void visitCatchStatement(CatchStatement statement) {
-        statement.getCode().visit(this);
-    }
-
     @Override
     public void visitArgumentlistExpression(ArgumentListExpression expression) {
         visitTupleExpression(expression);
diff --git a/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java b/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
index a2f9c5776f..c54607fd50 100644
--- a/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
@@ -122,7 +122,9 @@ public interface GroovyCodeVisitor {
     }
 
     default void visit(final Statement statement) {
-        if (statement != null) statement.visit(this);
+        if (statement != null) {
+            statement.visit(this);
+        }
     }
 
     //--------------------------------------------------------------------------
@@ -206,10 +208,16 @@ public interface GroovyCodeVisitor {
     }
 
     default void visitListOfExpressions(final List<? extends Expression> list) {
-        if (list != null) list.forEach(expr -> expr.visit(this));
+        if (list != null) {
+            for (Expression expr: list) {
+                expr.visit(this);
+            }
+        }
     }
 
     default void visit(final Expression expression) {
-        if (expression != null) expression.visit(this);
+        if (expression != null) {
+            expression.visit(this);
+        }
     }
 }