Source code

Revision control

Copy as Markdown

Other Tools

var g = newGlobal({newCompartment: true});
var dbg = new Debugger;
var gw = dbg.addDebuggee(g);
g.eval(` // 1
var line0 = Error().lineNumber; // 2
function f() { // 3
for (var x of [0]) { // 4
if (true == false) // 5
return false; // 6, aka line0 + 4
} // 7
return true; // 8
} // 9
`); // 10
if (g.dis)
g.dis(g.f);
var script = gw.getOwnPropertyDescriptor("f").value.script;
print("Debugger's view:");
print("----------------");
for (var i = script.startLine; i <= script.startLine + script.lineCount; i++) {
print("Line " + i + ": " + JSON.stringify(script.getLineOffsets(i)));
}
var hits = 0;
var handler = {hit: function () { hits++; }};
var offs = script.getLineOffsets(g.line0 + 4);
for (var i = 0; i < offs.length; i++)
script.setBreakpoint(offs[i], handler);
assertEq(g.f(), true);
assertEq(hits, 0);