[ 
https://issues.apache.org/jira/browse/GROOVY-9702?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul King resolved GROOVY-9702.
-------------------------------
    Fix Version/s: 4.0.0-alpha-1
       Resolution: Fixed

> ASTTest annotation has runtime retention and transform removes required 
> member from AST
> ---------------------------------------------------------------------------------------
>
>                 Key: GROOVY-9702
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9702
>             Project: Groovy
>          Issue Type: Bug
>            Reporter: Eric Milles
>            Assignee: Eric Milles
>            Priority: Major
>              Labels: breaking
>             Fix For: 4.0.0-alpha-1
>
>          Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> Consider the following:
> {code:groovy}
> import groovy.transform.*
> import org.codehaus.groovy.ast.*
> import static org.codehaus.groovy.transform.stc.StaticTypesMarker.*
> class C {
>   void m() {
>     def that = this;
>     { ->
>       @ASTTest(phase=INSTRUCTION_SELECTION, value={
>         ClassNode type = node.getNodeMetaData(INFERRED_TYPE)
>         assert type?.name == 'C'
>       })
>       def ref = getThisObject()
>       assert ref == that
>     }()
>   }
> }
> {code}
> This is a typical use of {{@ASTTest}}.  When compiled, the test annotation is 
> retained in the class file, which is unnecessary.  When the transform class 
> runs, it removes the "value" member from the AST, which is causing compiler 
> errors down the line when {{ExtendedVerifier}} runs {{AnnotationVisitor}}.  
> Also, the variable scope of the test closure is still connected to the class 
> and module, so code completion is making proposals for class members which 
> will not be there at run-time.
> This was originally investigated from the IDE side (see linked issue).
> [https://user-images.githubusercontent.com/18193802/90964420-fd51c800-e485-11ea-8349-c0f89e04561a.png]



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

Reply via email to