1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/debug/Script-getChildScripts-01.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,44 @@ 1.4 +// Basic getChildScripts tests. 1.5 + 1.6 +var g = newGlobal(); 1.7 +var dbg = new Debugger(g); 1.8 +var log; 1.9 +function note(s) { 1.10 + assertEq(s instanceof Debugger.Script, true); 1.11 + log += 'S'; 1.12 + var c = s.getChildScripts(); 1.13 + if (c.length > 0) { 1.14 + log += '['; 1.15 + for (var i = 0; i < c.length; i++) 1.16 + note(c[i]); 1.17 + log += ']'; 1.18 + } 1.19 +} 1.20 +dbg.onDebuggerStatement = function (frame) { note(frame.script); }; 1.21 + 1.22 +function test(code, expected) { 1.23 + log = ''; 1.24 + g.eval(code); 1.25 + assertEq(log, expected); 1.26 +} 1.27 + 1.28 +test("debugger;", 1.29 + "S"); 1.30 +test("function f() {} debugger;", 1.31 + "S[S]"); 1.32 +test("function g() { function h() { function k() {} return k; } return h; } debugger;", 1.33 + "S[S[S[S]]]"); 1.34 +test("function q() {} function qq() {} debugger;", 1.35 + "S[SS]"); 1.36 +test("[0].map(function id(a) { return a; }); debugger;", 1.37 + "S[S]"); 1.38 +test("Function('return 2+2;')(); debugger;", 1.39 + "S"); 1.40 +test("var obj = {get x() { return 0; }, set x(v) {}}; debugger;", 1.41 + "S[SS]"); 1.42 +test("function r(n) { for (var i = 0; i < n; i++) yield i; } debugger;", 1.43 + "S[S]"); 1.44 +test("function* qux(n) { for (var i = 0; i < n; i++) yield i; } debugger;", 1.45 + "S[S]"); 1.46 +test("var it = (3 for (p in obj)); debugger;", 1.47 + "S[S]");