diff options
Diffstat (limited to 'deps/v8/test/mjsunit/debug-evaluate-declaration.js')
-rw-r--r-- | deps/v8/test/mjsunit/debug-evaluate-declaration.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/debug-evaluate-declaration.js b/deps/v8/test/mjsunit/debug-evaluate-declaration.js new file mode 100644 index 0000000000..c64498e097 --- /dev/null +++ b/deps/v8/test/mjsunit/debug-evaluate-declaration.js @@ -0,0 +1,44 @@ +// Copyright 2015 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. + +// Flags: --expose-debug-as debug + +// Test that debug-evaluate only resolves variables that are used by +// the function inside which we debug-evaluate. This is to avoid +// incorrect variable resolution when a context-allocated variable is +// shadowed by a stack-allocated variable. + +"use strict"; + +var Debug = debug.Debug + +var exception = null; +function listener(event, exec_state, event_data, data) { + if (event != Debug.DebugEvent.Break) return; + try { + exec_state.frame(0).evaluate("var x = 2"); + exec_state.frame(0).evaluate("'use strict'; let y = 3"); + exec_state.frame(0).evaluate("var z = 4"); + exec_state.frame(0).evaluate("function bar() { return 5; }"); + } catch (e) { + exception = e; + print(e + e.stack); + } +} + +Debug.setListener(listener); + +var z = 1; + +(function() { + debugger; +})(); + +assertEquals(2, x); // declaration +assertThrows(() => y, ReferenceError); // let-declaration does not stick +assertEquals(4, z); // re-declaration +assertEquals(5, bar()); // function declaration + +Debug.setListener(null); +assertNull(exception); |