Completed
Details
Assignee
UnassignedUnassignedReporter
George JahadGeorge JahadApproval
OkPriority
MinorAffects versions
Fix versions
Details
Details
Assignee
Unassigned
UnassignedReporter
George Jahad
George JahadApproval
Ok
Priority
Affects versions
Fix versions
Created January 30, 2011 at 10:45 PM
Updated March 11, 2011 at 4:21 PM
Resolved March 11, 2011 at 4:21 PM
It appears like the clojure compiler doesn't get the starting scope of let bindings right from the java debug interface perspective.
The compiler sets the starting scope of a local to the let/loop body, rather than to immediately after the local is bound. So when you are stepping through a let statement in a debugger, you can't eval the already defined bindings until you get to the let body.
Because it is a compiler problem, you see the symptoms with any jdi based debugger, (I've confirmed this on both jdb and cdt.)
The fix is pretty straightforward. Just gen.mark() a label after each binding is emitted and use that in the gen.visitLocalVariable() call instead of the loopLabel. I've attached a patch for clojure 1.2 branch. (If there is interest I'll create one for clojure master.)