| // Test that prevUpToDate on frames are cleared. |
| |
| var g = newGlobal(); |
| var dbg = new Debugger(g); |
| |
| g.eval(` |
| function outer(unaliasedArg) { |
| var unaliasedVar = unaliasedArg + 42; |
| var aliasedVar = unaliasedArg; |
| |
| inner(); |
| return; |
| |
| function inner() { |
| aliasedVar++; |
| } |
| } |
| `); |
| |
| var log = ""; |
| for (var script of dbg.findScripts()) { |
| if (script.displayName === "inner") { |
| script.setBreakpoint(0, { hit: function(frame) { |
| // Force updateLiveScopes. |
| var outerEnv = frame.environment; |
| |
| // Get the environment of outer's frame on the stack, so that we may |
| // recover unaliased bindings in the debug scope. |
| outerEnv = frame.older.environment; |
| log += outerEnv.getVariable('unaliasedArg'); // 42 |
| log += outerEnv.getVariable('unaliasedVar'); // 84 |
| log += outerEnv.getVariable('aliasedVar'); // 42 |
| }}); |
| } |
| } |
| |
| g.outer(42); |
| assertEq(log, "428442"); |