|
1 // A live Environment can observe the new variables introduced by ES5 non-strict direct eval. |
|
2 |
|
3 var g = newGlobal(); |
|
4 g.eval("var x = 'global'; function f(s) { h(); eval(s); h(); }"); |
|
5 g.eval("function h() { debugger; }"); |
|
6 var dbg = Debugger(g); |
|
7 var env = undefined; |
|
8 var hits = 0; |
|
9 dbg.onDebuggerStatement = function (hframe) { |
|
10 if (env === undefined) { |
|
11 // First debugger statement. |
|
12 env = hframe.older.environment; |
|
13 assertEq(env.find("x") !== env, true); |
|
14 assertEq(env.names().indexOf("x"), -1); |
|
15 } else { |
|
16 // Second debugger statement, post-eval. |
|
17 assertEq(env.find("x"), env); |
|
18 assertEq(env.names().indexOf("x") >= 0, true); |
|
19 } |
|
20 hits++; |
|
21 }; |
|
22 g.f("var x = 'local';"); |
|
23 assertEq(hits, 2); |