Index: test/mjsunit/modules-debug-scopes1.js |
diff --git a/test/mjsunit/debug-scopes.js b/test/mjsunit/modules-debug-scopes1.js |
similarity index 63% |
copy from test/mjsunit/debug-scopes.js |
copy to test/mjsunit/modules-debug-scopes1.js |
index 0e822fce1c0e0249d0d3c8751f1757dc8b7b3875..02de75510e65f6f51fac6e33e838a9a690a10cae 100644 |
--- a/test/mjsunit/debug-scopes.js |
+++ b/test/mjsunit/modules-debug-scopes1.js |
@@ -1,35 +1,13 @@ |
-// Copyright 2011 the V8 project authors. All rights reserved. |
-// Redistribution and use in source and binary forms, with or without |
-// modification, are permitted provided that the following conditions are |
-// met: |
-// |
-// * Redistributions of source code must retain the above copyright |
-// notice, this list of conditions and the following disclaimer. |
-// * Redistributions in binary form must reproduce the above |
-// copyright notice, this list of conditions and the following |
-// disclaimer in the documentation and/or other materials provided |
-// with the distribution. |
-// * Neither the name of Google Inc. nor the names of its |
-// contributors may be used to endorse or promote products derived |
-// from this software without specific prior written permission. |
-// |
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+// Copyright 2016 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// MODULE |
// Flags: --expose-debug-as debug --allow-natives-syntax |
-// The functions used for testing backtraces. They are at the top to make the |
-// testing of source line/column easier. |
-// Get the Debug object exposed from the debug context global object. |
+// These tests are copied from mjsunit/debug-scopes.js and adapted for modules. |
+ |
+ |
var Debug = debug.Debug; |
var test_name; |
@@ -70,7 +48,7 @@ function BeginTest(name) { |
// Check result of a test. |
function EndTest() { |
- assertTrue(listener_called, "listerner not called for " + test_name); |
+ assertTrue(listener_called, "listener not called for " + test_name); |
assertNull(exception, test_name + " / " + exception); |
end_test_count++; |
} |
@@ -107,13 +85,6 @@ function CheckScopeChain(scopes, exec_state) { |
assertTrue(scope.isScope()); |
assertEquals(scopes[i], scope.scopeType()); |
assertScopeMirrorEquals(all_scopes[i], scope); |
- |
- // Check the global object when hitting the global scope. |
- if (scopes[i] == debug.ScopeType.Global) { |
- // Objects don't have same class (one is "global", other is "Object", |
- // so just check the properties directly. |
- assertPropertiesEqual(this, scope.scopeObject().value()); |
- } |
} |
CheckFastAllScopes(scopes, exec_state); |
@@ -224,7 +195,7 @@ function CheckScopeContent(minimum_content, number, exec_state) { |
// Check that the scopes have positions as expected. |
function CheckScopeChainPositions(positions, exec_state) { |
var all_scopes = exec_state.frame().allScopes(); |
- assertEquals(positions.length, all_scopes.length, "FrameMirror.allScopes length"); |
+ assertTrue(positions.length <= all_scopes.length, "FrameMirror.allScopes length"); |
for (var i = 0; i < positions.length; i++) { |
var scope = exec_state.frame().scope(i); |
assertTrue(scope.isScope()); |
@@ -232,6 +203,7 @@ function CheckScopeChainPositions(positions, exec_state) { |
if (!position) |
continue; |
+ print(`Checking position.start = ${position.start}, .end = ${position.end}`); |
assertEquals(position.start, scope.details().startPosition()) |
assertEquals(position.end, scope.details().endPosition()) |
} |
@@ -246,6 +218,7 @@ function local_1() { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({}, 0, exec_state); |
@@ -263,6 +236,7 @@ function local_2(a) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1}, 0, exec_state); |
@@ -281,6 +255,7 @@ function local_3(a) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1,x:3}, 0, exec_state); |
@@ -300,6 +275,7 @@ function local_4(a, b) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1,b:2,x:3,y:4}, 0, exec_state); |
@@ -318,6 +294,7 @@ function local_5() { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({}, 0, exec_state); |
@@ -336,16 +313,16 @@ function local_6() { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeContent({i:5}, 0, exec_state); |
+ CheckScopeContent({}, 0, exec_state); |
}; |
local_6(); |
EndTest(); |
-// Local scope with parameters, local variables and local variable introduced |
-// using eval. |
+// Local scope with parameters and local variables. |
BeginTest("Local 7"); |
function local_7(a, b) { |
@@ -358,172 +335,15 @@ function local_7(a, b) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6}, 0, exec_state); |
+ CheckScopeContent({a:1,b:2,x:3,y:4}, 0, exec_state); |
}; |
local_7(1, 2); |
EndTest(); |
-// Single empty with block. |
-BeginTest("With 1"); |
- |
-function with_1() { |
- with({}) { |
- debugger; |
- } |
-} |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.Local, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({}, 0, exec_state); |
-}; |
-with_1(); |
-EndTest(); |
- |
- |
-// Nested empty with blocks. |
-BeginTest("With 2"); |
- |
-function with_2() { |
- with({}) { |
- with({}) { |
- debugger; |
- } |
- } |
-} |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.With, |
- debug.ScopeType.Local, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({}, 0, exec_state); |
- CheckScopeContent({}, 1, exec_state); |
-}; |
-with_2(); |
-EndTest(); |
- |
- |
-// With block using an in-place object literal. |
-BeginTest("With 3"); |
- |
-function with_3() { |
- with({a:1,b:2}) { |
- debugger; |
- } |
-} |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.Local, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({a:1,b:2}, 0, exec_state); |
-}; |
-with_3(); |
-EndTest(); |
- |
- |
-// Nested with blocks using in-place object literals. |
-BeginTest("With 4"); |
- |
-function with_4() { |
- with({a:1,b:2}) { |
- with({a:2,b:1}) { |
- debugger; |
- } |
- } |
-} |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.With, |
- debug.ScopeType.Local, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({a:2,b:1}, 0, exec_state); |
- CheckScopeContent({a:1,b:2}, 1, exec_state); |
-}; |
-with_4(); |
-EndTest(); |
- |
- |
-// Nested with blocks using existing object. |
-BeginTest("With 5"); |
- |
-var with_object = {c:3,d:4}; |
-function with_5() { |
- with(with_object) { |
- with(with_object) { |
- debugger; |
- } |
- } |
-} |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.With, |
- debug.ScopeType.Local, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent(with_object, 0, exec_state); |
- CheckScopeContent(with_object, 1, exec_state); |
- assertEquals(exec_state.frame().scope(0).scopeObject(), exec_state.frame().scope(1).scopeObject()); |
- assertEquals(with_object, exec_state.frame().scope(1).scopeObject().value()); |
-}; |
-with_5(); |
-EndTest(); |
- |
- |
-// Nested with blocks using existing object in global code. |
-BeginTest("With 6"); |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.With, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent(with_object, 0, exec_state); |
- CheckScopeContent(with_object, 1, exec_state); |
- assertEquals(exec_state.frame().scope(0).scopeObject(), exec_state.frame().scope(1).scopeObject()); |
- assertEquals(with_object, exec_state.frame().scope(1).scopeObject().value()); |
-}; |
- |
-var with_object = {c:3,d:4}; |
-with(with_object) { |
- with(with_object) { |
- debugger; |
- } |
-} |
-EndTest(); |
- |
- |
-// With block in function that is marked for optimization while being executed. |
-BeginTest("With 7"); |
- |
-function with_7() { |
- with({}) { |
- %OptimizeFunctionOnNextCall(with_7); |
- debugger; |
- } |
-} |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.Local, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({}, 0, exec_state); |
-}; |
-with_7(); |
-EndTest(); |
- |
- |
// Simple closure formed by returning an inner function referering the outer |
// functions arguments. |
BeginTest("Closure 1"); |
@@ -539,10 +359,11 @@ function closure_1(a) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
debug.ScopeType.Closure, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1}, 1, exec_state); |
- CheckScopeChainNames(["f", "closure_1", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["f", "closure_1", undefined, undefined, undefined], exec_state) |
}; |
closure_1(1)(); |
EndTest(); |
@@ -566,10 +387,11 @@ function closure_2(a, b) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
debug.ScopeType.Closure, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1,x:3}, 1, exec_state); |
- CheckScopeChainNames(["f", "closure_2", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["f", "closure_2", undefined, undefined, undefined], exec_state) |
}; |
closure_2(1, 2)(); |
EndTest(); |
@@ -594,10 +416,11 @@ function closure_3(a, b) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
debug.ScopeType.Closure, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1,b:2,x:3,y:4}, 1, exec_state); |
- CheckScopeChainNames(["f", "closure_3", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["f", "closure_3", undefined, undefined, undefined], exec_state) |
}; |
closure_3(1, 2)(); |
EndTest(); |
@@ -625,10 +448,11 @@ function closure_4(a, b) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
debug.ScopeType.Closure, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1,b:2,x:3,y:4,f:function(){}}, 1, exec_state); |
- CheckScopeChainNames(["f", "closure_4", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["f", "closure_4", undefined, undefined, undefined], exec_state) |
}; |
closure_4(1, 2)(); |
EndTest(); |
@@ -655,10 +479,11 @@ function closure_5(a, b) { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
debug.ScopeType.Closure, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1,b:2,x:3,y:4,f:function(){}}, 1, exec_state); |
- CheckScopeChainNames(["f", "closure_5", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["f", "closure_5", undefined, undefined, undefined], exec_state) |
}; |
closure_5(1, 2)(); |
EndTest(); |
@@ -667,6 +492,7 @@ EndTest(); |
// Two closures. Due to optimizations only the parts actually used are provided |
// through the debugger information. |
BeginTest("Closure 6"); |
+let some_global; |
function closure_6(a, b) { |
function f(a, b) { |
var x = 3; |
@@ -686,11 +512,12 @@ listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
debug.ScopeType.Closure, |
debug.ScopeType.Closure, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({a:1}, 1, exec_state); |
CheckScopeContent({f:function(){}}, 2, exec_state); |
- CheckScopeChainNames([undefined, "f", "closure_6", undefined, undefined], exec_state) |
+ CheckScopeChainNames([undefined, "f", "closure_6", undefined, undefined, undefined], exec_state) |
}; |
closure_6(1, 2)(); |
EndTest(); |
@@ -722,12 +549,13 @@ listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
debug.ScopeType.Closure, |
debug.ScopeType.Closure, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({}, 0, exec_state); |
- CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6}, 1, exec_state); |
- CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6,f:function(){}}, 2, exec_state); |
- CheckScopeChainNames([undefined, "f", "closure_7", undefined, undefined], exec_state) |
+ CheckScopeContent({a:1,b:2,x:3,y:4}, 1, exec_state); |
+ CheckScopeContent({a:1,b:2,x:3,y:4,f:function(){}}, 2, exec_state); |
+ CheckScopeChainNames([undefined, "f", "closure_7", undefined, undefined, undefined], exec_state) |
}; |
closure_7(1, 2)(); |
EndTest(); |
@@ -743,188 +571,43 @@ function closure_8() { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({x: 2}, 0, exec_state); |
- CheckScopeChainNames(["inner", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["inner", undefined, undefined, undefined], 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); |
-} |
+let closure_9 = Function(' \ |
+ 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.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeChainNames(["inner", "closure_9", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["inner", undefined, undefined, undefined], exec_state) |
}; |
closure_9(); |
EndTest(); |
-// Test a mixture of scopes. |
-BeginTest("The full monty"); |
-function the_full_monty(a, b) { |
- var x = 3; |
- var y = 4; |
- eval('var i = 5'); |
- eval('var j = 6'); |
- function f(a, b) { |
- var x = 9; |
- var y = 10; |
- eval('var i = 11'); |
- eval('var j = 12'); |
- with ({j:13}){ |
- return function() { |
- var x = 14; |
- with ({a:15}) { |
- with ({b:16}) { |
- debugger; |
- some_global = a; |
- return f; |
- } |
- } |
- }; |
- } |
- } |
- return f(a, b); |
-} |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.With, |
- debug.ScopeType.Local, |
- debug.ScopeType.With, |
- debug.ScopeType.Closure, |
- debug.ScopeType.Closure, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({b:16}, 0, exec_state); |
- CheckScopeContent({a:15}, 1, exec_state); |
- CheckScopeContent({x:14}, 2, exec_state); |
- CheckScopeContent({j:13}, 3, exec_state); |
- CheckScopeContent({a:1,b:2,x:9,y:10,i:11,j:12}, 4, exec_state); |
- CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6,f:function(){}}, 5, exec_state); |
- CheckScopeChainNames([undefined, undefined, undefined, "f", "f", "the_full_monty", undefined, undefined], exec_state) |
-}; |
-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.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({x: 2}, 0, exec_state); |
- CheckScopeContent({x: 1}, 1, 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.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({x: 3}, 0, exec_state); |
- CheckScopeContent({x: 2}, 1, exec_state); |
- CheckScopeContent({x: 1}, 2, exec_state); |
- CheckScopeChainNames(["inner", "inner", "closure_in_with_2", undefined, undefined], 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.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeChainNames(["inner", "inner", "closure", "createClosure", undefined, undefined], exec_state) |
-} |
-closure_in_with_3(); |
-EndTest(); |
- |
- |
-BeginTest("Closure inside With 4"); |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.Local, |
- debug.ScopeType.With, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({x: 2}, 0, exec_state); |
- CheckScopeContent({x: 1}, 1, exec_state); |
- CheckScopeChainNames([undefined, undefined, undefined, undefined], exec_state) |
-}; |
- |
-with({x:1}) { |
- (function(x) { |
- debugger; |
- })(2); |
-} |
-EndTest(); |
- |
- |
// Test global scope. |
BeginTest("Global"); |
listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.Script, debug.ScopeType.Global], exec_state); |
- CheckScopeChainNames([undefined, undefined], exec_state) |
+ CheckScopeChain([debug.ScopeType.Module, debug.ScopeType.Script, debug.ScopeType.Global], exec_state); |
+ CheckScopeChainNames([undefined, undefined, undefined], exec_state) |
}; |
debugger; |
EndTest(); |
@@ -943,45 +626,18 @@ function catch_block_1() { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Catch, |
debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({e:'Exception'}, 0, exec_state); |
- CheckScopeChainNames(["catch_block_1", "catch_block_1", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["catch_block_1", "catch_block_1", undefined, undefined, undefined], exec_state) |
}; |
catch_block_1(); |
EndTest(); |
-BeginTest("Catch block 2"); |
-function catch_block_2() { |
- try { |
- throw 'Exception'; |
- } catch (e) { |
- with({n:10}) { |
- debugger; |
- } |
- } |
-}; |
- |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.Catch, |
- debug.ScopeType.Local, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({n:10}, 0, exec_state); |
- CheckScopeContent({e:'Exception'}, 1, exec_state); |
- CheckScopeChainNames(["catch_block_2", "catch_block_2", "catch_block_2", undefined, undefined], exec_state) |
-}; |
-catch_block_2(); |
-EndTest(); |
- |
- |
BeginTest("Catch block 3"); |
function catch_block_3() { |
- // Do eval to dynamically declare a local variable so that the context's |
- // extension slot is initialized with JSContextExtensionObject. |
eval("var y = 78;"); |
try { |
throw 'Exception'; |
@@ -994,53 +650,26 @@ function catch_block_3() { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Catch, |
debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({e:'Exception'}, 0, exec_state); |
- CheckScopeContent({y:78}, 1, exec_state); |
- CheckScopeChainNames(["catch_block_3", "catch_block_3", undefined, undefined], exec_state) |
+ CheckScopeContent({}, 1, exec_state); |
+ CheckScopeChainNames(["catch_block_3", "catch_block_3", undefined, undefined, undefined], exec_state) |
}; |
catch_block_3(); |
EndTest(); |
-BeginTest("Catch block 4"); |
-function catch_block_4() { |
- // Do eval to dynamically declare a local variable so that the context's |
- // extension slot is initialized with JSContextExtensionObject. |
- eval("var y = 98;"); |
- try { |
- throw 'Exception'; |
- } catch (e) { |
- with({n:10}) { |
- debugger; |
- } |
- } |
-}; |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChain([debug.ScopeType.With, |
- debug.ScopeType.Catch, |
- debug.ScopeType.Local, |
- debug.ScopeType.Script, |
- debug.ScopeType.Global], exec_state); |
- CheckScopeContent({n:10}, 0, exec_state); |
- CheckScopeContent({e:'Exception'}, 1, exec_state); |
- CheckScopeContent({y:98}, 2, exec_state); |
- CheckScopeChainNames(["catch_block_4", "catch_block_4", "catch_block_4", undefined, undefined], exec_state) |
-}; |
-catch_block_4(); |
-EndTest(); |
- |
- |
// Test catch in global scope. |
BeginTest("Catch block 5"); |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Catch, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({e:'Exception'}, 0, exec_state); |
- CheckScopeChainNames([undefined, undefined, undefined], exec_state) |
+ CheckScopeChainNames([undefined, undefined, undefined, undefined], exec_state) |
}; |
try { |
@@ -1057,11 +686,12 @@ BeginTest("Catch block 6"); |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
debug.ScopeType.Catch, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({x: 2}, 0, exec_state); |
CheckScopeContent({e:'Exception'}, 1, exec_state); |
- CheckScopeChainNames([undefined, undefined, undefined, undefined], exec_state) |
+ CheckScopeChainNames([undefined, undefined, undefined, undefined, undefined], exec_state) |
}; |
try { |
@@ -1089,10 +719,11 @@ function catch_block_7() { |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Catch, |
debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({e:'Exception'}, 0, exec_state); |
- CheckScopeChainNames(["catch_block_7", "catch_block_7", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["catch_block_7", "catch_block_7", undefined, undefined, undefined], exec_state) |
}; |
catch_block_7(); |
EndTest(); |
@@ -1103,10 +734,11 @@ BeginTest("Classes and methods 1"); |
listener_delegate = function(exec_state) { |
"use strict" |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
CheckScopeContent({}, 1, exec_state); |
- CheckScopeChainNames(["m", undefined, undefined], exec_state) |
+ CheckScopeChainNames(["m", undefined, undefined, undefined], exec_state) |
}; |
(function() { |
@@ -1133,40 +765,12 @@ var code1 = "function f() { \n" + |
"f(); \n"; |
listener_delegate = function(exec_state) { |
- CheckScopeChainPositions([{start: 58, end: 118}, {start: 10, end: 162}, {}, {}], exec_state); |
+ CheckScopeChainPositions([{start: 58, end: 118}, {start: 10, end: 162}], exec_state); |
} |
eval(code1); |
EndTest(); |
-function catch_block_2() { |
- try { |
- throw 'Exception'; |
- } catch (e) { |
- with({n:10}) { |
- debugger; |
- } |
- } |
-}; |
- |
-BeginTest("Scope positions in catch and 'with' statement"); |
-var code2 = "function catch_block() { \n" + |
- " try { \n" + |
- " throw 'Exception'; \n" + |
- " } catch (e) { \n" + |
- " with({n : 10}) { \n" + |
- " debugger; \n" + |
- " } \n" + |
- " } \n" + |
- "} \n" + |
- "catch_block(); \n"; |
- |
-listener_delegate = function(exec_state) { |
- CheckScopeChainPositions([{start: 131, end: 173}, {start: 94, end: 199}, {start: 20, end: 225}, {}, {}], exec_state); |
-} |
-eval(code2); |
-EndTest(); |
- |
BeginTest("Scope positions in for statement"); |
var code3 = "function for_statement() { \n" + |
" for (let i = 0; i < 1; i++) { \n" + |
@@ -1178,9 +782,10 @@ var code3 = "function for_statement() { \n" + |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Block, |
debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeChainPositions([{start: 52, end: 111}, {start: 22, end: 145}, {}, {}], exec_state); |
+ CheckScopeChainPositions([{start: 52, end: 111}, {start: 22, end: 145}], exec_state); |
} |
eval(code3); |
EndTest(); |
@@ -1198,9 +803,10 @@ listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Block, |
debug.ScopeType.Block, |
debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeChainPositions([{start: 66, end: 147}, {start: 52, end: 147}, {start: 22, end: 181}, {}, {}], exec_state); |
+ CheckScopeChainPositions([{start: 66, end: 147}, {start: 52, end: 147}, {start: 22, end: 181}], exec_state); |
} |
eval(code4); |
EndTest(); |
@@ -1216,9 +822,10 @@ var code5 = "function for_each_statement() { \n" + |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Block, |
debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeChainPositions([{start: 55, end: 111}, {start: 27, end: 145}, {}, {}], exec_state); |
+ CheckScopeChainPositions([{start: 55, end: 111}, {start: 27, end: 145}], exec_state); |
} |
eval(code5); |
EndTest(); |
@@ -1236,9 +843,10 @@ listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Block, |
debug.ScopeType.Block, |
debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeChainPositions([{start: 57, end: 147}, {start: 55, end: 147}, {start: 27, end: 181}, {}, {}], exec_state); |
+ CheckScopeChainPositions([{start: 57, end: 147}, {start: 55, end: 147}, {start: 27, end: 181}], exec_state); |
} |
eval(code6); |
EndTest(); |
@@ -1254,9 +862,10 @@ var code7 = "function for_each_statement() { \n" + |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeChainPositions([{start: 27, end: 181}, {}, {}], exec_state); |
+ CheckScopeChainPositions([{start: 27, end: 181}], exec_state); |
} |
eval(code7); |
EndTest(); |
@@ -1274,9 +883,10 @@ var code8 = "function for_each_statement() { \n" + |
listener_delegate = function(exec_state) { |
CheckScopeChain([debug.ScopeType.Block, |
debug.ScopeType.Local, |
+ debug.ScopeType.Module, |
debug.ScopeType.Script, |
debug.ScopeType.Global], exec_state); |
- CheckScopeChainPositions([{start: 89, end: 183}, {start: 27, end: 217}, {}, {}], exec_state); |
+ CheckScopeChainPositions([{start: 89, end: 183}, {start: 27, end: 217}], exec_state); |
} |
eval(code8); |
EndTest(); |