summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/regress/regress-crbug-323936.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/regress/regress-crbug-323936.js')
-rw-r--r--deps/v8/test/mjsunit/regress/regress-crbug-323936.js16
1 files changed, 11 insertions, 5 deletions
diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-323936.js b/deps/v8/test/mjsunit/regress/regress-crbug-323936.js
index d896eadcc4..6e75729c18 100644
--- a/deps/v8/test/mjsunit/regress/regress-crbug-323936.js
+++ b/deps/v8/test/mjsunit/regress/regress-crbug-323936.js
@@ -2,7 +2,7 @@
// 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
+// Flags: --expose-debug-as debug --debug-eval-readonly-locals
Debug = debug.Debug;
@@ -14,11 +14,11 @@ function listener(event, exec_state, event_data, data) {
try {
if (step == 0) {
assertEquals("error", exec_state.frame(0).evaluate("e").value());
- exec_state.frame(0).evaluate("e = 'foo'");
- exec_state.frame(0).evaluate("x = 'modified'");
+ exec_state.frame(0).evaluate("write_0('foo')");
+ exec_state.frame(0).evaluate("write_1('modified')");
} else {
assertEquals("argument", exec_state.frame(0).evaluate("e").value());
- exec_state.frame(0).evaluate("e = 'bar'");
+ exec_state.frame(0).evaluate("write_2('bar')");
}
step++;
} catch (e) {
@@ -33,9 +33,15 @@ function f(e, x) {
try {
throw "error";
} catch(e) {
+ // In ES2015 hoisting semantics, 'x' binds to the argument
+ // and 'e' binds to the exception.
+ function write_0(v) { e = v }
+ function write_1(v) { x = v }
debugger;
- assertEquals("foo", e);
+ assertEquals("foo", e); // overwritten by the debugger
}
+ assertEquals("argument", e); // debugger did not overwrite
+ function write_2(v) { e = v }
debugger;
assertEquals("bar", e);
assertEquals("modified", x);