You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/02/02 17:58:21 UTC
[groovy] branch GROOVY_3_0_X updated: Tweak `expressionListElement`
rule
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
new 2339aa9 Tweak `expressionListElement` rule
2339aa9 is described below
commit 2339aa97e5819f95ace4edb24dc164e88e2ee93b
Author: Daniel Sun <su...@apache.org>
AuthorDate: Mon Feb 3 01:33:50 2020 +0800
Tweak `expressionListElement` rule
(cherry picked from commit 5ab5a58da1b280261bc37afa7addf1a9a323f0d8)
---
src/antlr/GroovyParser.g4 | 4 +---
.../src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java | 4 ++++
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/antlr/GroovyParser.g4 b/src/antlr/GroovyParser.g4
index a8f59e7..93d4662 100644
--- a/src/antlr/GroovyParser.g4
+++ b/src/antlr/GroovyParser.g4
@@ -762,9 +762,7 @@ expressionList[boolean canSpread]
;
expressionListElement[boolean canSpread]
- : ( MUL { require($canSpread, "spread operator is not allowed here", -1); }
- |
- ) expression
+ : MUL? expression
;
enhancedStatementExpression
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index bdce08f..b4ae68b 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -3338,6 +3338,10 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> {
validateExpressionListElement(ctx, expression);
if (asBoolean(ctx.MUL())) {
+ if (!ctx.canSpread) {
+ throw createParsingFailedException("spread operator is not allowed here", ctx.MUL());
+ }
+
return configureAST(new SpreadExpression(expression), ctx);
}