| // Copyright 2016 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. | |
| // Test we break at every assignment in a var-statement with multiple | |
| // variable declarations. | |
| var exception = null; | |
| var log = [] | |
| function f() { | |
| var l1 = 1, // l | |
| l2, // m | |
| l3 = 3; // n | |
| let l4, // o | |
| l5 = 5, // p | |
| l6 = 6; // q | |
| const l7 = 7, // r | |
| l8 = 8, // s | |
| l9 = 9; // t | |
| return 0 // u | |
| ; // v | |
| } | |
| function listener(event, exec_state, event_data, data) { | |
| if (event != Debug.DebugEvent.Break) return; | |
| try { | |
| var line = exec_state.frame(0).sourceLineText(); | |
| var col = exec_state.frame(0).sourceColumn(); | |
| print(line); | |
| var match = line.match(/\/\/ (\w)$/); | |
| assertEquals(2, match.length); | |
| log.push(match[1] + col); | |
| if (match[1] != "v") { | |
| exec_state.prepareStep(Debug.StepAction.StepIn); | |
| } | |
| } catch (e) { | |
| exception = e; | |
| } | |
| } | |
| var Debug = debug.Debug; | |
| Debug.setListener(listener); | |
| debugger; // a | |
| var g1 = 1, // b | |
| g2 = 2, // c | |
| g3; // d | |
| let g4 = 4, // e | |
| g5, // f | |
| g6 = 6; // g | |
| const g7 = 7, // h | |
| g8 = 8, // i | |
| g9 = f(); // j | |
| Debug.setListener(null); | |
| assertNull(exception); | |
| // Note that let declarations, if not explicitly initialized, implicitly | |
| // initialize to undefined. | |
| var expected = [ | |
| "a0", // debugger statement | |
| "b9","c9", // global var | |
| "e9","f4","g9", // global let | |
| "h11","i11","j11", // global const | |
| "l11","n11", // local var | |
| "o6","p11","q11", // local let | |
| "r13","s13","t13", // local const | |
| "u2","v3", // return | |
| ]; | |
| assertEquals(expected, log); |