diff options
Diffstat (limited to 'js/src/jit-test/tests/debug/Frame-onStep-19.js')
-rw-r--r-- | js/src/jit-test/tests/debug/Frame-onStep-19.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Frame-onStep-19.js b/js/src/jit-test/tests/debug/Frame-onStep-19.js new file mode 100644 index 0000000000..019c026a8e --- /dev/null +++ b/js/src/jit-test/tests/debug/Frame-onStep-19.js @@ -0,0 +1,41 @@ +// Stepping should ignore nested function declarations. + +// Nested functions are hoisted to the top of the function body, +// so technically the first thing that happens when you call the outer function +// is that each inner function is created and bound to a local variable. +// But users don't actually want to see that happen when they're stepping. +// It's super confusing. + +load(libdir + "stepping.js"); + +testStepping( + `\ + (function() { // line 1 + let x = 1; // line 2 + funcb("funcb"); // line 3 + function funcb(msg) { // line 4 + console.log(msg) + } + }) // line 7 + `, + [1, 2, 3, 7]); + +// Stopping at the ClassDeclaration on line 8 is fine. For that matter, +// stopping on line 5 wouldn't be so bad if we did it after line 3 and before +// line 8; alas, the actual order of execution is 5, 2, 3, 8... which is too +// confusing. +testStepping( + `\ + function f() { // 1 + var x = 0; // 2 + a(); // 3 + + function a() { // 5 + x += 1; // 6 + } // 7 + class Car {} // 8 + return x; // 9 + } // 10 + f + `, + [1, 2, 3, 8, 9, 10]); |