[ 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)