node/deps/v8/test/mjsunit/debug-multiple-var-decl.js
Michaël Zasso 2cc2951796
deps: update V8 to 5.1.281.69
Pick up the latest branch-head for V8 5.1. This branch brings in
improved language support and performance improvements. For full
details: http://v8project.blogspot.com/2016/04/v8-release-51.html

* Picks up the latest branch head for 5.1 [1]
* Edit v8 gitignore to allow trace_event copy
* Update V8 DEP trace_event as per deps/v8/DEPS [2]

[1] https://chromium.googlesource.com/v8/v8.git/+/dc81244
[2] https://chromium.googlesource.com/chromium/src/base/trace_event/common/+/c8c8665

PR-URL: https://github.com/nodejs/node/pull/7016
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2016-06-29 09:04:28 +02:00

75 lines
1.8 KiB
JavaScript

// 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.
// Flags: --expose-debug-as debug
// 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","v0", // return
];
assertEquals(expected, log);