| Index: test/mjsunit/debug-scopes.js
|
| ===================================================================
|
| --- test/mjsunit/debug-scopes.js (revision 7514)
|
| +++ test/mjsunit/debug-scopes.js (working copy)
|
| @@ -144,6 +144,10 @@
|
| if (!scope.scopeObject().property('.catch-var').isUndefined()) {
|
| scope_size--;
|
| }
|
| + // Skip property with empty name.
|
| + if (!scope.scopeObject().property('').isUndefined()) {
|
| + scope_size--;
|
| + }
|
|
|
| if (count != scope_size) {
|
| print('Names found in scope:');
|
| @@ -607,6 +611,43 @@
|
| EndTest();
|
|
|
|
|
| +// Closure that may be optimized out.
|
| +BeginTest("Closure 8");
|
| +function closure_8() {
|
| + (function inner(x) {
|
| + debugger;
|
| + })(2);
|
| +}
|
| +
|
| +listener_delegate = function(exec_state) {
|
| + CheckScopeChain([debug.ScopeType.Local,
|
| + debug.ScopeType.Global], exec_state);
|
| + CheckScopeContent({x: 2}, 0, exec_state);
|
| +}
|
| +closure_8();
|
| +EndTest();
|
| +
|
| +
|
| +BeginTest("Closure 9");
|
| +function closure_9() {
|
| + eval("var y = 1;");
|
| + eval("var z = 1;");
|
| + (function inner(x) {
|
| + y++;
|
| + z++;
|
| + debugger;
|
| + })(2);
|
| +}
|
| +
|
| +listener_delegate = function(exec_state) {
|
| + CheckScopeChain([debug.ScopeType.Local,
|
| + debug.ScopeType.Closure,
|
| + debug.ScopeType.Global], exec_state);
|
| +}
|
| +closure_9();
|
| +EndTest();
|
| +
|
| +
|
| // Test a mixture of scopes.
|
| BeginTest("The full monty");
|
| function the_full_monty(a, b) {
|
| @@ -653,6 +694,81 @@
|
| the_full_monty(1, 2)()
|
| EndTest();
|
|
|
| +
|
| +BeginTest("Closure inside With 1");
|
| +function closure_in_with_1() {
|
| + with({x:1}) {
|
| + (function inner(x) {
|
| + debugger;
|
| + })(2);
|
| + }
|
| +}
|
| +
|
| +listener_delegate = function(exec_state) {
|
| + CheckScopeChain([debug.ScopeType.Local,
|
| + debug.ScopeType.With,
|
| + debug.ScopeType.Closure,
|
| + debug.ScopeType.Global], exec_state);
|
| + CheckScopeContent({x: 2}, 0, exec_state);
|
| +}
|
| +closure_in_with_1();
|
| +EndTest();
|
| +
|
| +
|
| +BeginTest("Closure inside With 2");
|
| +function closure_in_with_2() {
|
| + with({x:1}) {
|
| + (function inner(x) {
|
| + with({x:3}) {
|
| + debugger;
|
| + }
|
| + })(2);
|
| + }
|
| +}
|
| +
|
| +listener_delegate = function(exec_state) {
|
| + CheckScopeChain([debug.ScopeType.With,
|
| + debug.ScopeType.Local,
|
| + debug.ScopeType.With,
|
| + debug.ScopeType.Closure,
|
| + debug.ScopeType.Global], exec_state);
|
| + CheckScopeContent({x: 3}, 0, exec_state);
|
| + CheckScopeContent({x: 2}, 1, exec_state);
|
| + CheckScopeContent({x: 1}, 2, exec_state);
|
| +}
|
| +closure_in_with_2();
|
| +EndTest();
|
| +
|
| +
|
| +BeginTest("Closure inside With 3");
|
| +function createClosure(a) {
|
| + var b = a + 1;
|
| + return function closure() {
|
| + var c = b;
|
| + (function inner(x) {
|
| + with({x:c}) {
|
| + debugger;
|
| + }
|
| + })(2);
|
| + }
|
| +}
|
| +
|
| +function closure_in_with_3() {
|
| + var f = createClosure(0);
|
| + f();
|
| +}
|
| +
|
| +listener_delegate = function(exec_state) {
|
| + CheckScopeChain([debug.ScopeType.With,
|
| + debug.ScopeType.Local,
|
| + debug.ScopeType.Closure,
|
| + debug.ScopeType.Closure,
|
| + debug.ScopeType.Global], exec_state);
|
| +}
|
| +closure_in_with_3();
|
| +EndTest();
|
| +
|
| +
|
| // Test global scope.
|
| BeginTest("Global");
|
| listener_delegate = function(exec_state) {
|
|
|