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

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git


The following commit(s) were added to refs/heads/develop by this push:
     new dcc026bf8 ASParser: ensure that a function call end offset always 
includes the ) token
dcc026bf8 is described below

commit dcc026bf8b961f67035f74f2b18a7a9830687ac0
Author: Josh Tynjala <joshtynj...@apache.org>
AuthorDate: Tue Jan 24 15:26:28 2023 -0800

    ASParser: ensure that a function call end offset always includes the ) token
    
    Previously, if there was nothing between the , and ) tokens, the end offset 
was the , token, which could break things like code intelligence in IDEs
---
 .../org/apache/royale/compiler/internal/parsing/as/ASParser.g  | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git 
a/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.g
 
b/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.g
index 00a2b8084..a4ee25dfd 100644
--- 
a/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.g
+++ 
b/compiler/src/main/antlr/org/apache/royale/compiler/internal/parsing/as/ASParser.g
@@ -3294,6 +3294,7 @@ argumentList[ContainerNode args]
 { 
        ExpressionNodeBase n = null; 
        boolean foundFirstArg = false; 
+       Token afterComma = null;
 }
     :   (   n=assignmentExpression
                { foundFirstArg = true; if (args != null) args.addItem(n); }
@@ -3317,12 +3318,21 @@ argumentList[ContainerNode args]
                                if (n!= null && args != null) args.addItem(n);
                        }
                        if (args != null) args.endAfter(commaT);        
+                               afterComma = LT(1);
                }
        
                n=assignmentExpression
                        { 
                                if(n == null) 
+                               {
                                    n = handleMissingIdentifier(null); 
+                                       // special case: nothing between "," 
and ")"
+                                       // ensures that args ends at the 
correct offset
+                                       if(afterComma.getType() == 
TOKEN_PAREN_CLOSE)
+                                       {
+                                               args.endAfter(afterComma);
+                                       }
+                               }
                            
                            if (args != null) 
                     args.addItem(n); 

Reply via email to