Environment-methods-toPrimitive.js (663B)
1 // removeDebuggee can be called through ToPrimitive while converting the argument 2 // passed to Debugger.Environment.{find,getVariable,setVariable} to string. 3 4 var g = newGlobal({newCompartment: true}); 5 g.eval("function f() { debugger; }"); 6 var dbg = new Debugger(); 7 var oddball = {[Symbol.toPrimitive]: () => dbg.removeDebuggee(g)}; 8 9 for (var method of ["find", "getVariable", "setVariable"]) { 10 dbg.addDebuggee(g); 11 dbg.onDebuggerStatement = frame => { 12 var ex; 13 try { 14 frame.environment[method](oddball, oddball); 15 } catch (e) { 16 ex = e; 17 } 18 assertEq(ex.message, "Debugger.Environment is not a debuggee environment"); 19 }; 20 g.f(); 21 }