1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// Optimized out scopes should be considered optimizedOut.
var g = newGlobal({newCompartment: true});
var dbg = new Debugger;
dbg.addDebuggee(g);
g.eval("" + function f() {
var x = 42;
{
let y = 43;
(function () { })();
}
});
dbg.onEnterFrame = function (f) {
if (f.callee && (f.callee.name === undefined)) {
blockenv = f.environment.parent;
assertEq(blockenv.optimizedOut, true);
assertEq(blockenv.inspectable, true);
assertEq(blockenv.type, "declarative");
assertEq(blockenv.calleeScript, null);
assertEq(blockenv.names().indexOf("y") !== -1, true);
funenv = blockenv.parent;
assertEq(funenv.optimizedOut, true);
assertEq(funenv.inspectable, true);
assertEq(funenv.type, "declarative");
assertEq(funenv.calleeScript, f.older.script);
assertEq(funenv.names().indexOf("x") !== -1, true);
globalenv = funenv.parent.parent;
assertEq(globalenv.optimizedOut, false);
assertEq(globalenv.inspectable, true);
assertEq(globalenv.type, "object");
assertEq(globalenv.calleeScript, null);
dbg.removeDebuggee(g);
assertEq(blockenv.inspectable, false);
assertEq(funenv.inspectable, false);
}
}
g.f();
|