Frame-onStack-04.js (861B)
1 // frame.onStack is false for frames discarded during uncatchable error unwinding. 2 3 load(libdir + 'asserts.js'); 4 5 var g = newGlobal({newCompartment: true}); 6 var dbg = Debugger(g); 7 var hits = 0; 8 var snapshot; 9 dbg.onDebuggerStatement = function (frame) { 10 var stack = []; 11 for (var f = frame; f; f = f.older) { 12 if (f.type === "call" && f.script !== null) 13 stack.push(f); 14 } 15 snapshot = stack; 16 if (hits++ === 0) 17 assertEq(frame.eval("x();"), null); 18 else 19 return null; 20 }; 21 22 g.eval("function z() { debugger; }"); 23 g.eval("function y() { z(); }"); 24 g.eval("function x() { y(); }"); 25 assertEq(g.eval("debugger; 'ok';"), "ok"); 26 assertEq(hits, 2); 27 assertEq(snapshot.length, 3); 28 for (var i = 0; i < snapshot.length; i++) { 29 assertEq(snapshot[i].onStack, false); 30 assertThrowsInstanceOf(() => frame.script, Error); 31 }