summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Object-script-environment-nondebuggee.js
blob: 3e77bc89d5c6a532035613ed2abbe11a7232d115 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// The script and environment of a non-debuggee function are null.

var g = newGlobal({newCompartment: true});
g.eval('function f() { return "from f"; }');

var dbg = new Debugger;
var gw = dbg.makeGlobalObjectReference(g);
var fw = gw.getOwnPropertyDescriptor('f').value;

// g is not a debuggee, so we can't fetch f's script or environment.
assertEq(fw.script, null);
assertEq(fw.environment, null);

// If we add g as a debuggee, we can fetch f's script and environment.
dbg.addDebuggee(g);
var fscript = fw.script;
var fenv = fw.environment;
assertEq(fscript instanceof Debugger.Script, true);
assertEq(fenv instanceof Debugger.Environment, true);

// Removing g as a debuggee makes the script and environment inaccessible again.
dbg.removeDebuggee(g);
assertEq(fw.script, null);
assertEq(fw.environment, null);