|
1 // Using an environment that is not a debuggee should throw. |
|
2 |
|
3 load(libdir + 'asserts.js'); |
|
4 |
|
5 var g = newGlobal(); |
|
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.callee, 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, 'object'); |
|
39 dbg.removeDebuggee(g); |
|
40 check(env); |