Environment-nondebuggee.js (1073B)
1 // Using an environment that is not a debuggee should throw. 2 3 load(libdir + 'asserts.js'); 4 5 var g = newGlobal({newCompartment: true}); 6 var dbg = new Debugger; 7 let gw = dbg.addDebuggee(g); 8 var log; 9 10 function check(env) { 11 assertEq(env.inspectable, false); 12 assertThrowsInstanceOf(() => env.type, Error); 13 assertThrowsInstanceOf(() => env.object, Error); 14 assertThrowsInstanceOf(() => env.parent, Error); 15 assertThrowsInstanceOf(() => env.calleeScript, Error); 16 17 assertThrowsInstanceOf(() => env.names(), Error); 18 assertThrowsInstanceOf(() => env.find('x'), Error); 19 assertThrowsInstanceOf(() => env.getVariable('x'), Error); 20 assertThrowsInstanceOf(() => env.setVariable('x'), Error); 21 } 22 23 dbg.onDebuggerStatement = function (frame) { 24 log += 'd'; 25 26 let env = frame.environment; 27 dbg.removeDebuggee(g); 28 check(env); 29 } 30 31 log = ''; 32 g.eval('let x = 42; debugger;'); 33 assertEq(log, 'd'); 34 35 dbg.addDebuggee(g); 36 g.eval('function f() { }'); 37 let env = gw.getOwnPropertyDescriptor('f').value.environment; 38 assertEq(env.type, 'declarative'); 39 dbg.removeDebuggee(g); 40 check(env);