Svatopluk Dedic created NETBEANS-5935:
-----------------------------------------

             Summary: Groovy ASTPath does not contain full path from root
                 Key: NETBEANS-5935
                 URL: https://issues.apache.org/jira/browse/NETBEANS-5935
             Project: NetBeans
          Issue Type: Bug
          Components: groovy - Editor
    Affects Versions: 12.4
            Reporter: Svatopluk Dedic
             Fix For: 12.6


Groovy API produces wrong data. For certain constructions, AST node levels are 
skipped in ASTPath(). Consider, for example the following code:

 
{code:java}
        def result = GradleRunner.create()
                .withProjectDir(testProjectDir.root)
                .withArguments('dockerBuild')
                .withPluginClasspath()
                .build()

{code}
When ASTPath is used to search path to "A" in {{withArguments}}, the resulting 
path will contain:

 
 * (levels from class to statement OK)
 * DeclarationExpression(result) - OK
 * MethodCallExpression(expr1, build()) - OK
 * MethodCallExpression(expr2, withArguments()

But the actual AST contains: build(withPluginClassPath(withArguments))) - the 
withPluginClasspath level is gone.

This is caused by anomalies in line:column information in Groovy AST nodes. 
With the above example, positions provided by Groovy parser are as follows 
(copypaste from debugger)

 
{noformat}
value String "build" "build" value String "build" "build" 
lineNumber int 20 20 
columnNumber int 22 22 
lastLineNumber int 24 24 
lastColumnNumber int 25 25     
   method ConstantExpression #18247 
org.codehaus.groovy.ast.expr.ConstantExpression@7eed0c39[build]     
   lineNumber int 24 24     
   columnNumber int 18 18     
   lastLineNumber int 24 24     
   lastColumnNumber int 23 23 


value String "withPluginClasspath" "withPluginClasspath" 
lineNumber int 23 23 
columnNumber int 18 18 
lastLineNumber int 23 23 
lastColumnNumber int 39 39     
   method ConstantExpression #18263    
org.codehaus.groovy.ast.expr.ConstantExpression@e3678b4[withPluginClasspath]   
   lineNumber int 23 23     
   columnNumber int 18 18     
   lastLineNumber int 23 23     
   lastColumnNumber int 37 37 


value String "withArguments" "withArguments" 
lineNumber int 22 22 
columnNumber int 18 18 
lastLineNumber int 22 22 
lastColumnNumber int 46 46     
   method ConstantExpression #18280 
org.codehaus.groovy.ast.expr.ConstantExpression@3042594a[withArguments]     
   lineNumber int 22 22     
   columnNumber int 18 18     
   lastLineNumber int 22 22     
   lastColumnNumber int 31 31 


value String "withProjectDir" "withProjectDir" 
lineNumber int 21 21 
columnNumber int 18 18 
lastLineNumber int 21 21 
lastColumnNumber int 53 53     
   method ConstantExpression #18294 
org.codehaus.groovy.ast.expr.ConstantExpression@25fb46ab[withProjectDir]    
   lineNumber int 21 21     
   columnNumber int 18 18     
   lastLineNumber int 21 21     
   lastColumnNumber int 32 32

 
value String "create" "create" 
lineNumber int 20 20 
columnNumber int 35 35 
lastLineNumber int 20 20 
lastColumnNumber int 43 43     
   method ConstantExpression #16415 
org.codehaus.groovy.ast.expr.ConstantExpression@37691095[create]     
   lineNumber int 20 20     
   columnNumber int 35 35     
   lastLineNumber int 20 20     
   lastColumnNumber int 41 41 {noformat}
 

 

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to