Hello folks

In my AST transformation that takes a block of code and executes it as a 
closure, I am unable to set a breakpoint inside the block of code at runtime. 
This however works if the closure was written as part of the script directly. 
What am I missing?

Sample Groovy code

    class MyClass {
        void method() {
            String b = ""
            throw new WTHException()
        }
    }

My invoker
    class InvokeClosure {
        static ClassNode NODE = ClassHelper.makeNode(InvokeClosure.class)
        static void invokeClosure(Closure<?> closure) {
             closure.call()
        }
    }

My AST transformation

    void visitMethod(MethodNode methodNode) {
        ClosureExpression closureExpression = 
GeneralUtils.closureX(methodNode.getCode())
        // NODE is a 
        StaticMethodCallExpression methodExpression = 
GeneralUtils.callX(InvokeClosure.NODE, "invokeClosure", 
GeneralUtils.args(closure))

        methodNode.setCode(GeneralUtils.stmt(methodExpression))
    }

When I use this AST transformation, it compiles fine, invokeClosure gets called 
when I invoke my method, but I am not able to set a breakpoint at the method() 
function in line 1. The IDE disables my breakpoint on execution. What am I 
missing in my transformation? I tried setting positions for my closure, and my 
statement. Still did not work. Thank you for your responses

regards

Reply via email to