I think these are the relevant cites (below).  Long story short, due to the 
potential for circular dependencies, the Groovy is processed minimally to be 
able to generate “stub” information that the Java compiler can use to make 
links.  I have run some experiments where there is more stages of compilation 
applied to source references (this is in Eclipse), but I don’t have anything 
that survives circular dependencies.  I do have stashes if you want to try and 
revisit.

The AST transformation class is processed by the development environment if it 
can detect a source reference.  Typically these classes would be supplied 
through libraries as binary (class file only) dependencies.  We can talk more 
about this separately as there should be some minimal support for having AST 
transforms in a referenced project and I’ve even attempted to allow “main” 
sources supply transforms and “test” sources of the same project consume them.

Rest assured that during class file generation, the sources are put through the 
full bevy of compilation phases.  This is where the target directory is 
meaningful and is supplied by the dev env.

https://issues.apache.org/jira/browse/GROOVY-7764 (or see the “Stub generator / 
Joint compiler” component in Jira)

https://github.com/groovy/groovy-eclipse/issues/704
https://github.com/groovy/groovy-eclipse/issues/606
https://github.com/groovy/groovy-eclipse/issues/421
https://github.com/groovy/groovy-eclipse/issues/175


From: Christopher Smith <chry...@gmail.com>
Sent: Wednesday, September 21, 2022 12:37 PM
To: dev@groovy.apache.org
Subject: [EXT] GRECLIPSE: ASTT processing through later compile phases

External Email: Use caution with links and attachments.

As I understand the current state, GRECLIPSE processes the AST up through the 
CONVERSION phase only for various reasons, and (importantly) even if no editor 
for `TransformedClass.groovy` is open, it still analyzes `TransformedClass` for 
members through internal recompilation instead of referring to 
`TransformedClass.class`, meaning that members added by ASTTs produce editor 
errors (and don't auto-complete) even if compiling correctly.

I understand there have been attempts to extend ASTT processing through 
CANONICALIZATION, which would be immensely helpful to my team. (1) Is there 
somewhere that this work is filed so that I don't clutter up trackers, and (2) 
is there anything that I can do to assist extending the processing through 
SEMANTIC_ANALYSIS or CANONICALIZATION?

--
Christopher Smith

Reply via email to