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:12 UTC
[36/50] groovy git commit: Support command expression in the lambda
body
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 <su...@apache.org>
Authored: Fri Mar 24 21:59:41 2017 +0800
Committer: sunlan <su...@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