Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(462)

Unified Diff: test/mjsunit/harmony/debug-step-destructuring-bind.js

Issue 1542813003: [debugger] step on every assignment in destructuring bind. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix: only emit statement positions for subpatterns Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/parsing/pattern-rewriter.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/harmony/debug-step-destructuring-bind.js
diff --git a/test/mjsunit/harmony/debug-step-destructuring-bind.js b/test/mjsunit/harmony/debug-step-destructuring-bind.js
new file mode 100644
index 0000000000000000000000000000000000000000..a78431bb027c28a24984184518c7f305c450672b
--- /dev/null
+++ b/test/mjsunit/harmony/debug-step-destructuring-bind.js
@@ -0,0 +1,110 @@
+// 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-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, break_count);
+ 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);
+
+var id = x => x; // B9 B10 B36 B37
+
+function test() {
+ debugger; // B0
+ function fx1([
+ a, // B2
+ b // B3
+ ]) {
+ assertEquals([1, 2], [a, b]); // B4
+ } // B5
+ fx1([1, 2, 3]); // B1
+
+ function f2([
+ a, // B7
+ b = id(3) // B8
+ ]) {
+ assertEquals([4, 3], [a, b]); // B11
+ } // B12
+ f2([4]); // B6
+
+ function f3({
+ x: a, // B14
+ y: b // B15
+ }) {
+ assertEquals([5, 6], [a, b]); // B16
+ } // B17
+ f3({y: 6, x: 5}); // B13
+
+ function f4([
+ a, // B19
+ {
+ b, // B20
+ c, // B21
+ }
+ ]) {
+ assertEquals([2, 4, 6], [a, b, c]); // B22
+ } // B23
+ f4([2, {c: 6, b: 4}]); // B18
+
+ function f5([
+ {
+ a, // B25
+ b = 7 // B26
+ },
+ c = 3 // B27
+ ] = [{a:1}]) {
+ assertEquals([1, 7, 3], [a, b, c]); // B28
+ } // B29
+ f5(); // B24
+
+ var name = "x"; // B30
+ function f6({
+ [id(name)]: a, // B34 B35
+ b = a // B38
+ }) {
+ assertEquals([9, 9], [a, b]); // B39
+ } // B40
+ var o6 = {}; // B31
+ o6[name] = 9; // B32
+ f6(o6); // B33
+
+ try {
+ throw [3, 4]; // B41
+ } catch ([
+ a, // B42
+ b, // B43
+ c = 6 // B44
+ ]) {
+ assertEquals([3, 4, 6], [a, b, c]); // B45
+ }
+
+ var { // B46
+ x: a, // B47
+ y: b = 9 // B48
+ } = { x: 4 };
+ assertEquals([4, 9], [a, b]); // B49
+} // B50
+
+test();
+Debug.setListener(null); // B51
+assertNull(exception);
« no previous file with comments | « src/parsing/pattern-rewriter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698