| // getOffsetLocation agrees with getAllColumnOffsets |
| |
| var global = newGlobal(); |
| 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()"); |