aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/harmony/debug-step-destructuring-assignment.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/harmony/debug-step-destructuring-assignment.js')
-rw-r--r--deps/v8/test/mjsunit/harmony/debug-step-destructuring-assignment.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/harmony/debug-step-destructuring-assignment.js b/deps/v8/test/mjsunit/harmony/debug-step-destructuring-assignment.js
new file mode 100644
index 0000000000..bfc75bd23f
--- /dev/null
+++ b/deps/v8/test/mjsunit/harmony/debug-step-destructuring-assignment.js
@@ -0,0 +1,86 @@
+// 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 --harmony-destructuring-assignment
+// Flags: --harmony-destructuring-bind
+
+var exception = null;
+var Debug = debug.Debug;
+var break_count = 0;
+
+function listener(event, exec_state, event_data, data) {
+ if (event != Debug.DebugEvent.Break) return;
+ try {
+ var source = exec_state.frame(0).sourceLineText();
+ print(source);
+ assertTrue(source.indexOf(`// B${break_count++}`) > 0);
+ if (source.indexOf("assertEquals") > 0) {
+ exec_state.prepareStep(Debug.StepAction.StepNext);
+ } else {
+ exec_state.prepareStep(Debug.StepAction.StepIn);
+ }
+ } catch (e) {
+ exception = e;
+ print(e);
+ }
+};
+
+Debug.setListener(listener);
+
+function f() {
+ var a, b, c, d;
+ debugger; // B0
+ [ // B1
+ a, // B3
+ b, // B4
+ c = 3 // B5
+ ] = [1, 2]; // B2
+ assertEquals({a:1,b:2,c:3}, {a, b, c}); // B6
+
+ [ // B7
+ a, // B9
+ [
+ b, // B10
+ c // B11
+ ],
+ d // B12
+ ] = [5, [6, 7], 8]; // B8
+ assertEquals({a:5,b:6,c:7,d:8}, {a, b, c, d}); // B13
+
+ [ // B14
+ a, // B16
+ b, // B17
+ ...c // B18
+ ] = [1, 2, 3, 4]; // B15
+ assertEquals({a:1,b:2,c:[3,4]}, {a, b, c}); // B19
+
+ ({ // B20
+ a, // B22
+ b, // B23
+ c = 7 // B24
+ } = {a: 5, b: 6}); // B21
+ assertEquals({a:5,b:6,c:7}, {a, b, c}); // B25
+
+ ({ // B26
+ a, // B28
+ b = return1(), // B29
+ c = return1() // B30
+ } = {a: 5, b: 6}); // B27
+ assertEquals({a:5,b:6,c:1}, {a, b, c}); // B33
+
+ ({ // B34
+ x : a, // B36
+ y : b, // B37
+ z : c = 3 // B38
+ } = {x: 1, y: 2}); // B35
+ assertEquals({a:1,b:2,c:3}, {a, b, c}); // B39
+} // B40
+
+function return1() {
+ return 1; // B31
+} // B32
+
+f();
+Debug.setListener(null); // B41
+assertNull(exception);