Nice :) Just to get this straight, you compiled the traits first and then you compiled the local transformation and the user-developer code altogether. It's that correct ?
2016-04-21 23:16 GMT+02:00 John Smiljanic <john.smilja...@gmail.com>: > After some digging I found > org.codehaus.groovy.transform.trait.TraitComposer and from there I was able > to backtrack to how groovy transforms statically defined traits. This is > performed in canonalization, so it appears that a trait that is added to a > class during semantic analysis may still have its fields/behavior applied > to that class. So, I was able to get this to work as follows: > > 1. Compile the trait. > > I was having some problems jointly compiling the trait while compiling the > class that implements the trait when using the embedded compiler. If I > recall correctly the base issue was that if I declared the trait as follows: > > > classNode.addInterface(new ClassNode( > <trait name> > , Opcodes.ACC_INTERFACE > , ClassHelper.make(Object.class))); > > the TraitComposer did not recognize the interface ClassNode as a Trait (no > @Trait annotation). I suppose that the ClassNode constructor above does > not trigger a proper compilation/load of my trait's groovy file (?), but I > frankly didn't dig much deeper. > > This is fine for my purposes. In my case, the Trait developer (framework > developer) is different than the class developer (citizen developer). > > 2. Declare the trait during semantic analysis of the Class. > > classNode.addInterface(new ClassNode(<trait javaclass from 1>); > > > > On Wed, Apr 20, 2016 at 3:08 PM, John Smiljanic <john.smilja...@gmail.com> > wrote: > >> Hi All, >> >> Groovy 2.3.7. >> >> I've been experimenting with trying to add a Trait (or Mixin) to a >> ClassNode during semantic analysis (compiler phase). I've tried using >> ClassNode::addInterface and ClassNode::addMixin passing the appropriate. I >> sort of expected ClassNode to have an addTrait or something like. >> >> Is setting a trait at this phase of compilation supported? >> >> JR >> > >