test_framebindings-07.js (1136B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 add_task( 7 threadFrontTest(async ({ threadFront, debuggee }) => { 8 const packet = await executeOnNextTickAndWaitForPause( 9 () => evalCode(debuggee), 10 threadFront 11 ); 12 13 const environment = await packet.frame.getEnvironment(); 14 Assert.equal(environment.type, "function"); 15 Assert.equal(environment.bindings.arguments[0].z.value, "z"); 16 17 const parent = environment.parent; 18 Assert.equal(parent.type, "block"); 19 Assert.equal(parent.bindings.variables.banana3.value.class, "Function"); 20 21 const grandpa = parent.parent; 22 Assert.equal(grandpa.type, "function"); 23 Assert.equal(grandpa.bindings.arguments[0].y.value, "y"); 24 25 await threadFront.resume(); 26 }) 27 ); 28 29 function evalCode(debuggee) { 30 debuggee.eval( 31 "function banana(x) {\n" + 32 " return function banana2(y) {\n" + 33 " return function banana3(z) {\n" + 34 ' eval("");\n' + 35 " debugger;\n" + 36 " };\n" + 37 " };\n" + 38 "}\n" + 39 "banana('x')('y')('z');\n" 40 ); 41 }