js/src/jit-test/tests/debug/Environment-nondebuggee.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:10f34a65ebf2
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);

mercurial