michael@0: // If debugger.onEnterFrame returns {return:val}, the frame returns immediately. michael@0: michael@0: load(libdir + "asserts.js"); michael@0: michael@0: var g = newGlobal(); michael@0: g.set = false; michael@0: michael@0: var dbg = Debugger(g); michael@0: var savedFrame; michael@0: dbg.onDebuggerStatement = function (frame) { michael@0: var innerSavedFrame; michael@0: dbg.onEnterFrame = function (frame) { michael@0: innerSavedFrame = frame; michael@0: return null; michael@0: }; michael@0: // Using frame.eval lets us catch termination. michael@0: assertEq(frame.eval("set = true;"), null); michael@0: assertEq(innerSavedFrame.live, false); michael@0: savedFrame = frame; michael@0: return { return: "pass" }; michael@0: }; michael@0: michael@0: savedFrame = undefined; michael@0: assertEq(g.eval("debugger;"), "pass"); michael@0: assertEq(savedFrame.live, false); michael@0: assertEq(g.set, false);