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.


---

Reply via email to