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);
         }