Script-getOffsetLocation.js (1162B)
1 // getOffsetLocation agrees with getAllColumnOffsets 2 3 var global = newGlobal({newCompartment: true}); 4 Debugger(global).onDebuggerStatement = function (frame) { 5 var script = frame.script; 6 var byOffset = []; 7 script.getAllColumnOffsets().forEach(function (entry) { 8 var {lineNumber, columnNumber, offset} = entry; 9 byOffset[offset] = {lineNumber, columnNumber}; 10 }); 11 12 frame.onStep = function() { 13 var offset = frame.offset; 14 var location = script.getOffsetLocation(offset); 15 if (location.isEntryPoint) { 16 assertEq(location.lineNumber, byOffset[offset].lineNumber); 17 assertEq(location.columnNumber, byOffset[offset].columnNumber); 18 } else { 19 assertEq(byOffset[offset], undefined); 20 } 21 }; 22 }; 23 24 function test(body) { 25 print("Test: " + body); 26 global.eval(`function f(n) { debugger; ${body} }`); 27 global.f(3); 28 } 29 30 test("for (var i = 0; i < n; ++i) ;"); 31 test("var w0,x1=3,y2=4,z3=9"); 32 test("print(n),print(n),print(n)"); 33 test("var o={a:1,b:2,c:3}"); 34 test("var a=[1,2,n]"); 35 36 global.eval("function ppppp() { return 1; }"); 37 test("1 && ppppp(ppppp()) && new Error()");