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 2022/03/08 15:27:29 UTC

[groovy] branch GROOVY_4_0_X updated: GROOVY-10520: Incorrect line numbers for Closure classes in AstNode

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch GROOVY_4_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_4_0_X by this push:
     new 880b913  GROOVY-10520: Incorrect line numbers for Closure classes in AstNode
880b913 is described below

commit 880b9138d250008b78f677f7433f728d45a5acf0
Author: Daniel Sun <su...@apache.org>
AuthorDate: Tue Mar 8 22:13:07 2022 +0800

    GROOVY-10520: Incorrect line numbers for Closure classes in AstNode
---
 src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java | 6 +++++-
 src/test/org/codehaus/groovy/ast/LineColumnCheck.txt          | 8 ++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 35d2b8f..83644bf 100644
--- a/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -4131,11 +4131,15 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> {
                     ? this.visitFormalParameterList(ctx.formalParameterList())
                     : null;
 
+            BlockStatement code = this.visitBlockStatementsOpt(ctx.blockStatementsOpt());
             if (!asBoolean(ctx.ARROW())) {
                 parameters = Parameter.EMPTY_ARRAY;
+
+                if (code.isEmpty()) {
+                    configureAST(code, ctx);
+                }
             }
 
-            Statement code = this.visitBlockStatementsOpt(ctx.blockStatementsOpt());
             ClosureExpression result = configureAST(new ClosureExpression(parameters, code), ctx);
 
             visitingClosureCount -= 1;
diff --git a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
index 4148608..4bc8d6f 100644
--- a/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
+++ b/src/test/org/codehaus/groovy/ast/LineColumnCheck.txt
@@ -171,6 +171,14 @@ var = f{closure}
 :::[MethodCallExpression,(1:7),(1:17)];
 [ConstantExpression,(1:7),(1:8)][ArgumentListExpression,(1:8),(1:17)][ClosureExpression,(1:8),(1:17)]
 
+
+###closureExpressionWithEmptyBlockStatement:::
+f{
+
+}
+:::[MethodCallExpression,(1:1),(3:2)];
+[ConstantExpression,(1:1),(1:2)][ArgumentListExpression,(1:2),(3:2)][ClosureExpression,(1:2),(3:2)][BlockStatement,(1:2),(3:2)]
+
 ###ArrayExpressionD1:::
 def array = new int[1]
 :::[ArrayExpression,(1:13),(1:23)][ClassNode,(1:17),(1:20)][ConstantExpression,(1:21),(1:22)]