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