Support command expression in the lambda body
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/b017a53b Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/b017a53b Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/b017a53b Branch: refs/heads/master Commit: b017a53b822d0824420c5547cf24f4b4f3713d72 Parents: 0954c01 Author: sunlan <sun...@apache.org> Authored: Fri Mar 24 21:59:41 2017 +0800 Committer: sunlan <sun...@apache.org> Committed: Fri Mar 24 21:59:41 2017 +0800 ---------------------------------------------------------------------- .../main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 | 2 +- .../main/java/org/apache/groovy/parser/antlr4/AstBuilder.java | 4 ++-- .../src/test/resources/core/Lambda_01x.groovy | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/b017a53b/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 b/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 index e7ba77e..71b7f0e 100644 --- a/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 +++ b/subprojects/groovy-parser-antlr4/src/main/antlr4/org/apache/groovy/parser/antlr4/GroovyParser.g4 @@ -502,7 +502,7 @@ standardLambdaParameters lambdaBody : block - | expression + | statementExpression ; http://git-wip-us.apache.org/repos/asf/groovy/blob/b017a53b/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 b92780c..e59dd5f 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 @@ -3106,8 +3106,8 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov @Override public Statement visitLambdaBody(LambdaBodyContext ctx) { - if (asBoolean(ctx.expression())) { - return this.configureAST(new ExpressionStatement((Expression) this.visit(ctx.expression())), ctx); + if (asBoolean(ctx.statementExpression())) { + return this.configureAST((ExpressionStatement) this.visit(ctx.statementExpression()), ctx); } if (asBoolean(ctx.block())) { http://git-wip-us.apache.org/repos/asf/groovy/blob/b017a53b/subprojects/groovy-parser-antlr4/src/test/resources/core/Lambda_01x.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-parser-antlr4/src/test/resources/core/Lambda_01x.groovy b/subprojects/groovy-parser-antlr4/src/test/resources/core/Lambda_01x.groovy index a1400a3..138711d 100644 --- a/subprojects/groovy-parser-antlr4/src/test/resources/core/Lambda_01x.groovy +++ b/subprojects/groovy-parser-antlr4/src/test/resources/core/Lambda_01x.groovy @@ -43,5 +43,6 @@ assert 6 == c()(3) c = { (e) -> { e * 2 } } assert 6 == c()(3) - - +assert ['1', '2', '3'] == [0, 1, 2].collect(e -> String.valueOf e + 1) +assert [3, 4, 5] == ['0', '1', '2'].collect(e -> Integer.parseInt e plus 1 plus 2) +assert [4] == ['0'].collect(e -> e.length() plus 1 plus 2) \ No newline at end of file