michael@0: var g = newGlobal(); michael@0: var dbg = new Debugger; michael@0: var gw = dbg.addDebuggee(g); michael@0: var log; michael@0: var a = []; michael@0: michael@0: dbg.onDebuggerStatement = function (frame) { michael@0: log += 'd'; michael@0: frame.onStep = function () { michael@0: // This handler must not wipe out the debuggee's value in JSContext::iterValue. michael@0: log += 's'; michael@0: // This will use JSContext::iterValue in the debugger. michael@0: for (let i of a) michael@0: log += 'i'; michael@0: }; michael@0: }; michael@0: michael@0: log = ''; michael@0: g.eval("debugger; for (let i of [1,2,3]) print(i);"); michael@0: assertEq(!!log.match(/^ds*$/), true);