Github user danielsun1106 commented on a diff in the pull request:
https://github.com/apache/groovy/pull/792#discussion_r216116090
--- Diff:
subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
---
@@ -2337,14 +2337,11 @@ public Expression
visitPathElement(PathElementContext ctx) {
this.visitNamedPropertyArgs(ctx.namedPropertyArgs());
Expression right;
- if (mapEntryExpressionList.size() == 1) {
- MapEntryExpression mapEntryExpression =
mapEntryExpressionList.get(0);
-
- if (mapEntryExpression.getKeyExpression() instanceof
SpreadMapExpression) {
- right = mapEntryExpression.getKeyExpression();
- } else {
- right = mapEntryExpression;
- }
+ if (mapEntryExpressionList.size() == 0) {
+ // expecting list of MapEntryExpressions later so use
SpreadMap to smuggle empty MapExpression to later stages
+ right = new SpreadMapExpression(configureAST(new
MapExpression(), ctx.namedPropertyArgs()));
--- End diff --
The implementation of parser should not decouple with back end(i.e. not
rely on the implementation of back end).
If the implementation of resolve visitor changes in the future, the
expression is not thrown away, the node position is missing.
---