[ 
https://issues.apache.org/jira/browse/NETBEANS-5935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17403803#comment-17403803
 ] 

Svatopluk Dedic commented on NETBEANS-5935:
-------------------------------------------

Note that ASTPath.isInside method is hacked up to allow brute-force traversal 
in all subtrees when path is constructed. this should be also fixed -> perf 
improvement.

> 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
>            Priority: Critical
>             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