Hi All, Any solutions? On 21 Aug 2015 09:21, "Anto Aravinth" <anto.aravinth....@gmail.com> wrote:
> Hi all, > > > > I'm trying to add an closure to my classNode via AST transformation. My > code looks something like this: > > > > List<ASTNode> closure = new AstBuilder().buildFromCode { > > { param -> > > delegate.with { > > param() > > } > > } > > } > > > > cNode.addMethod(new MethodNode('helloTest', ACC_PUBLIC, > ClassHelper.DYNAMIC_TYPE,[new Parameter(ClassHelper.OBJECT_TYPE, "param")] > as Parameter[], ClassNode.EMPTY_ARRAY, closure[0])); > > > > And running AST transformation, on the test class: > > > > @AddMethod > > class Test{ > > } > > > > def a = new Test() > > a.helloTest({ > > println "Works great!"; > > }) > > > > Now no errors nothing. The code works fine, but since I have passed an > println to the helloTest closure, I expect it to print on my console, which > didn't happen. Looks like my closure itself didn't ran. Then I called the > closure myself, something like this: > > > > List<ASTNode> closure = new AstBuilder().buildFromCode { > > { param -> > > delegate.with { > > println delegate > > param() > > } > > }.call() > > } > > > > Now this gives NPE, saying param is null. Looks now the parameter is not > getting binded. Delegate is getting printed as expected. > > > > Also I'm not sure, the way I have added the closure to my class is right > or not. Any help would be great! >