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