// Using an environment that is not a debuggee should throw. load(libdir + 'asserts.js'); var g = newGlobal(); var dbg = new Debugger; let gw = dbg.addDebuggee(g); var log; function check(env) { assertEq(env.inspectable, false); assertThrowsInstanceOf(() => env.type, Error); assertThrowsInstanceOf(() => env.object, Error); assertThrowsInstanceOf(() => env.parent, Error); assertThrowsInstanceOf(() => env.callee, Error); assertThrowsInstanceOf(() => env.names(), Error); assertThrowsInstanceOf(() => env.find('x'), Error); assertThrowsInstanceOf(() => env.getVariable('x'), Error); assertThrowsInstanceOf(() => env.setVariable('x'), Error); } dbg.onDebuggerStatement = function (frame) { log += 'd'; let env = frame.environment; dbg.removeDebuggee(g); check(env); } log = ''; g.eval('let x = 42; debugger;'); assertEq(log, 'd'); dbg.addDebuggee(g); g.eval('function f() { }'); let env = gw.getOwnPropertyDescriptor('f').value.environment; assertEq(env.type, 'declarative'); dbg.removeDebuggee(g); check(env);