Repository: groovy Updated Branches: refs/heads/parrot 35ec2156e -> 4e3b987aa
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/parrot Commit: 4e3b987aae15597858825bad4b58b3bf1217ce05 Parents: 35ec215 Author: sunlan <[email protected]> Authored: Sat Jan 28 22:29:29 2017 +0800 Committer: sunlan <[email protected]> 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); } }
