blob: 894250ef5bb498afb9b84271bfd95a2d9d9ab26d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
// Check that the line number reported at an onPop stop makes sense,
// even when it happens on an "artificial" instruction.
var g = newGlobal({newCompartment: true});
// This bit of code arranges for the line number of the "artificial"
// instruction to be something nonsensical -- the middle of a loop
// which cannot be entered.
g.eval(`function f() {
debugger; // +0
if(false) { // +1
for(var b=0; b<0; b++) { // +2
c = 2; // +3
} // +4
} // +5
} // +6
`);
var dbg = Debugger(g);
let debugLine;
let foundLine;
dbg.onDebuggerStatement = function(frame) {
debugLine = frame.script.getOffsetLocation(frame.offset).lineNumber;
frame.onPop = function(c) {
foundLine = this.script.getOffsetLocation(this.offset).lineNumber;
};
};
g.eval("f();\n");
// The stop should happen on the closing brace of the function.
assertEq(foundLine == debugLine + 6, true);
|