summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Script-getOffsetLocation.js
blob: 3df02f6fc18ba8a4098d2e5fa1cf66283e16898d (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
35
36
37
// getOffsetLocation agrees with getAllColumnOffsets

var global = newGlobal({newCompartment: true});
Debugger(global).onDebuggerStatement = function (frame) {
    var script = frame.script;
    var byOffset = [];
    script.getAllColumnOffsets().forEach(function (entry) {
        var {lineNumber, columnNumber, offset} = entry;
        byOffset[offset] = {lineNumber, columnNumber};
    });

    frame.onStep = function() {
        var offset = frame.offset;
        var location = script.getOffsetLocation(offset);
        if (location.isEntryPoint) {
            assertEq(location.lineNumber, byOffset[offset].lineNumber);
            assertEq(location.columnNumber, byOffset[offset].columnNumber);
        } else {
            assertEq(byOffset[offset], undefined);
        }
    };
};

function test(body) {
  print("Test: " + body);
  global.eval(`function f(n) { debugger; ${body} }`);
  global.f(3);
}

test("for (var i = 0; i < n; ++i) ;");
test("var w0,x1=3,y2=4,z3=9");
test("print(n),print(n),print(n)");
test("var o={a:1,b:2,c:3}");
test("var a=[1,2,n]");

global.eval("function ppppp() { return 1; }");
test("1 && ppppp(ppppp()) && new Error()");