| Index: test/mjsunit/bugs/harmony/debug-blockscopes.js
|
| diff --git a/test/mjsunit/harmony/debug-blockscopes.js b/test/mjsunit/bugs/harmony/debug-blockscopes.js
|
| similarity index 64%
|
| copy from test/mjsunit/harmony/debug-blockscopes.js
|
| copy to test/mjsunit/bugs/harmony/debug-blockscopes.js
|
| index 30f681f129da92cdc6a97fea1cd0bb26c1e91a23..a407c531a7d87113183a5a7b4be7b6c2ca779656 100644
|
| --- a/test/mjsunit/harmony/debug-blockscopes.js
|
| +++ b/test/mjsunit/bugs/harmony/debug-blockscopes.js
|
| @@ -157,7 +157,6 @@ function CheckScopeContent(content, number, exec_state) {
|
| scope_size--;
|
| }
|
|
|
| - // TODO(keuchel): print('count' + count + ' scopesize' + scope_size);
|
| if (count != scope_size) {
|
| print('Names found in scope:');
|
| var names = scope.scopeObject().propertyNames();
|
| @@ -193,197 +192,33 @@ function CheckScopeContent(content, number, exec_state) {
|
| }
|
|
|
|
|
| -// Simple empty block scope in local scope.
|
| -BeginTest("Local block 1");
|
| -
|
| -function local_block_1() {
|
| - {
|
| - debugger;
|
| - }
|
| -}
|
| -
|
| -listener_delegate = function(exec_state) {
|
| - CheckScopeChain([debug.ScopeType.Block,
|
| - debug.ScopeType.Local,
|
| - debug.ScopeType.Global], exec_state);
|
| - CheckScopeContent({}, 0, exec_state);
|
| - CheckScopeContent({}, 1, exec_state);
|
| -};
|
| -local_block_1();
|
| -EndTest();
|
| -
|
| -
|
| -// Local scope with a parameter.
|
| -BeginTest("Local 2");
|
| -
|
| -function local_2(a) {
|
| - {
|
| - debugger;
|
| - }
|
| -}
|
| -
|
| -listener_delegate = function(exec_state) {
|
| - CheckScopeChain([debug.ScopeType.Block,
|
| - debug.ScopeType.Local,
|
| - debug.ScopeType.Global], exec_state);
|
| - CheckScopeContent({a:1}, 1, exec_state);
|
| -};
|
| -local_2(1);
|
| -EndTest();
|
| -
|
| -
|
| -// Local scope with a parameter and a local variable.
|
| -BeginTest("Local 3");
|
| -
|
| -function local_3(a) {
|
| - var x = 3;
|
| - debugger;
|
| -}
|
| -
|
| -listener_delegate = function(exec_state) {
|
| - CheckScopeChain([debug.ScopeType.Local,
|
| - debug.ScopeType.Global], exec_state);
|
| - CheckScopeContent({a:1,x:3}, 0, exec_state);
|
| -};
|
| -local_3(1);
|
| -EndTest();
|
| -
|
| -
|
| -// Local scope with parameters and local variables.
|
| -BeginTest("Local 4");
|
| -
|
| -function local_4(a, b) {
|
| - var x = 3;
|
| - var y = 4;
|
| - debugger;
|
| -}
|
| -
|
| -listener_delegate = function(exec_state) {
|
| - CheckScopeChain([debug.ScopeType.Local,
|
| - debug.ScopeType.Global], exec_state);
|
| - CheckScopeContent({a:1,b:2,x:3,y:4}, 0, exec_state);
|
| -};
|
| -local_4(1, 2);
|
| -EndTest();
|
| -
|
| -
|
| -// Single empty with block.
|
| -BeginTest("With block 1");
|
| -
|
| -function with_block_1() {
|
| - with({}) {
|
| - debugger;
|
| - }
|
| -}
|
| -
|
| -listener_delegate = function(exec_state) {
|
| - CheckScopeChain([debug.ScopeType.Block,
|
| - debug.ScopeType.With,
|
| - debug.ScopeType.Local,
|
| - debug.ScopeType.Global], exec_state);
|
| - CheckScopeContent({}, 0, exec_state);
|
| - CheckScopeContent({}, 1, exec_state);
|
| -};
|
| -with_block_1();
|
| -EndTest();
|
| -
|
| -
|
| -// Nested empty with blocks.
|
| -BeginTest("With block 2");
|
| -
|
| -function with_block_2() {
|
| - with({}) {
|
| - with({}) {
|
| +// Simple closure formed by returning an inner function referering to an outer
|
| +// block local variable and an outer function's parameter. Due to VM
|
| +// optimizations parts of the actual closure is missing from the debugger
|
| +// information.
|
| +BeginTest("Closure 1");
|
| +
|
| +function closure_1(a) {
|
| + var x = 2;
|
| + let y = 3;
|
| + if (true) {
|
| + let z = 4;
|
| + function f() {
|
| debugger;
|
| - }
|
| + return a + x + y + z;
|
| + };
|
| + return f;
|
| }
|
| }
|
|
|
| listener_delegate = function(exec_state) {
|
| - CheckScopeChain([debug.ScopeType.Block,
|
| - debug.ScopeType.With,
|
| + CheckScopeChain([debug.ScopeType.Local,
|
| debug.ScopeType.Block,
|
| - debug.ScopeType.With,
|
| - debug.ScopeType.Local,
|
| - debug.ScopeType.Global], exec_state);
|
| - CheckScopeContent({}, 0, exec_state);
|
| - CheckScopeContent({}, 1, exec_state);
|
| - CheckScopeContent({}, 2, exec_state);
|
| - CheckScopeContent({}, 3, exec_state);
|
| -};
|
| -with_block_2();
|
| -EndTest();
|
| -
|
| -
|
| -// With block using an in-place object literal.
|
| -BeginTest("With block 3");
|
| -
|
| -function with_block_3() {
|
| - with({a:1,b:2}) {
|
| - debugger;
|
| - }
|
| -}
|
| -
|
| -listener_delegate = function(exec_state) {
|
| - CheckScopeChain([debug.ScopeType.Block,
|
| - debug.ScopeType.With,
|
| - debug.ScopeType.Local,
|
| + debug.ScopeType.Closure,
|
| debug.ScopeType.Global], exec_state);
|
| CheckScopeContent({}, 0, exec_state);
|
| - CheckScopeContent({a:1,b:2}, 1, exec_state);
|
| + CheckScopeContent({z:4}, 1, exec_state);
|
| + CheckScopeContent({a:1,x:2,y:3}, 2, exec_state);
|
| };
|
| -with_block_3();
|
| +closure_1(1)();
|
| EndTest();
|
| -
|
| -
|
| -// Nested with blocks using in-place object literals.
|
| -BeginTest("With block 4");
|
| -
|
| -function with_block_4() {
|
| - with({a:1,b:2}) {
|
| - with({a:2,b:1}) {
|
| - debugger;
|
| - }
|
| - }
|
| -}
|
| -
|
| -listener_delegate = function(exec_state) {
|
| - CheckScopeChain([debug.ScopeType.Block,
|
| - debug.ScopeType.With,
|
| - debug.ScopeType.Block,
|
| - debug.ScopeType.With,
|
| - debug.ScopeType.Local,
|
| - debug.ScopeType.Global], exec_state);
|
| - CheckScopeContent({a:2,b:1}, 1, exec_state);
|
| - CheckScopeContent({a:1,b:2}, 3, exec_state);
|
| -};
|
| -with_block_4();
|
| -EndTest();
|
| -
|
| -
|
| -// TODO(keuchel):
|
| -// Simple closure formed by returning an inner function referering to an outer
|
| -// block local variable and an outer function's parameter.
|
| -// BeginTest("Closure 1");
|
| -//
|
| -// function closure_1(a) {
|
| -// {
|
| -// let x = 3;
|
| -// function f() {
|
| -// debugger;
|
| -// return a + x;
|
| -// };
|
| -// }
|
| -// return f;
|
| -// }
|
| -//
|
| -// listener_delegate = function(exec_state) {
|
| -// CheckScopeChain([debug.ScopeType.Local,
|
| -// debug.ScopeType.Closure,
|
| -// debug.ScopeType.Global], exec_state);
|
| -// // CheckScopeContent({}, 0, exec_state);
|
| -// // CheckScopeContent({}, 1, exec_state);
|
| -// // CheckScopeContent({a:1}, 2, exec_state);
|
| -// };
|
| -// closure_1(1)();
|
| -// EndTest();
|
|
|