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!