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/04/11 01:38:03 UTC

[27/50] groovy git commit: Minor refactoring

Minor refactoring


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/4e3b987a
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/4e3b987a
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/4e3b987a

Branch: refs/heads/master
Commit: 4e3b987aae15597858825bad4b58b3bf1217ce05
Parents: 35ec215
Author: sunlan <su...@apache.org>
Authored: Sat Jan 28 22:29:29 2017 +0800
Committer: sunlan <su...@apache.org>
Committed: Sat Jan 28 22:29:29 2017 +0800

----------------------------------------------------------------------
 .../groovy/classgen/asm/StatementWriter.java      | 18 ++++++++++--------
 .../apache/groovy/parser/antlr4/AstBuilder.java   | 15 +--------------
 2 files changed, 11 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/4e3b987a/src/main/org/codehaus/groovy/classgen/asm/StatementWriter.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/classgen/asm/StatementWriter.java b/src/main/org/codehaus/groovy/classgen/asm/StatementWriter.java
index c36916f..719c4e9 100644
--- a/src/main/org/codehaus/groovy/classgen/asm/StatementWriter.java
+++ b/src/main/org/codehaus/groovy/classgen/asm/StatementWriter.java
@@ -150,6 +150,14 @@ public class StatementWriter {
         compileStack.pop();
     }
 
+    private void visitExpressionOfLoopStatement(Expression expression) {
+        if (expression instanceof ClosureListExpression) {
+            ((ClosureListExpression) expression).getExpressions().forEach(this::visitExpressionOrStatement);
+        } else {
+            visitExpressionOrStatement(expression);
+        }
+    }
+
     protected void writeForLoopWithClosureList(ForStatement loop) {
         controller.getAcg().onLineNumber(loop,"visitForLoop");
         writeStatementLabel(loop);
@@ -168,13 +176,7 @@ public class StatementWriter {
 
         // visit init
         for (int i = 0; i < condIndex; i++) {
-            Expression expression = expressions.get(i);
-
-            if (expression instanceof ClosureListExpression) {
-                ((ClosureListExpression) expression).getExpressions().forEach(this::visitExpressionOrStatement);
-            } else {
-                visitExpressionOrStatement(expression);
-            }
+            visitExpressionOfLoopStatement(expressions.get(i));
         }
 
         Label continueLabel = controller.getCompileStack().getContinueLabel();
@@ -199,7 +201,7 @@ public class StatementWriter {
         // visit increment
         mv.visitLabel(continueLabel);
         for (int i = condIndex + 1; i < size; i++) {
-            visitExpressionOrStatement(expressions.get(i));
+            visitExpressionOfLoopStatement(expressions.get(i));
         }
 
         // jump to test the condition again

http://git-wip-us.apache.org/repos/asf/groovy/blob/4e3b987a/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 5ba04de..39eb932 100644
--- a/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/groovy-parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -443,20 +443,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
         if (expressionList.size() == 1) {
             return this.configureAST(expressionList.get(0), ctx);
         } else {
-            Statement code =
-                    this.createBlockStatement(
-                            expressionList.stream()
-                                    .map(e -> this.configureAST(new ExpressionStatement(e), e))
-                                    .collect(Collectors.toList()));
-            return this.configureAST(
-                    new MethodCallExpression(
-                            this.configureAST(
-                                    new ClosureExpression(Parameter.EMPTY_ARRAY, code),
-                                    ctx),
-                            CALL_STR,
-                            new ArgumentListExpression()
-                    ),
-                    ctx);
+            return this.configureAST(new ClosureListExpression(expressionList), ctx);
         }
     }