blob: 30e19c42afbd44117f0c177ba2423efe47d77934 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// Copyright 2015 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Ben Murdochda12d292016-06-02 14:46:10 +01005// Flags: --expose-debug-as debug
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00006
7// Get the Debug object exposed from the debug context global object.
8Debug = debug.Debug
9
10listenerComplete = false;
11breakPointCount = 0;
12
13function listener(event, exec_state, event_data, data) {
14 if (event == Debug.DebugEvent.Break) {
15 breakPointCount++;
16 if (breakPointCount == 1) {
17 // Break point in initializer for parameter `a`, invoked by
18 // initializer for parameter `b`
19 assertEquals('default', exec_state.frame(1).evaluate('mode').value());
20
21 // initializer for `b` can't refer to `b`
22 assertThrows(function() {
23 exec_state.frame(1).evaluate('b').value();
24 }, ReferenceError);
25
26 assertThrows(function() {
27 exec_state.frame(1).evaluate('c');
28 }, ReferenceError);
29 } else if (breakPointCount == 2) {
30 // Break point in IIFE initializer for parameter `c`
31 assertEquals('modeFn', exec_state.frame(1).evaluate('a.name').value());
32 assertEquals('default', exec_state.frame(1).evaluate('b').value());
33 assertThrows(function() {
34 exec_state.frame(1).evaluate('c');
35 }, ReferenceError);
36 } else if (breakPointCount == 3) {
37 // Break point in function body --- `c` parameter is shadowed
38 assertEquals('modeFn', exec_state.frame(0).evaluate('a.name').value());
39 assertEquals('default', exec_state.frame(0).evaluate('b').value());
40 assertEquals('local', exec_state.frame(0).evaluate('d').value());
41 }
42 }
43};
44
45// Add the debug event listener.
46Debug.setListener(listener);
47
48function f(a = function modeFn(mode) { debugger; return mode; },
49 b = a("default"),
50 c = (function() { debugger; })()) {
51 var d = 'local';
52 debugger;
53};
54
55f();
56
57// Make sure that the debug event listener vas invoked.
58assertEquals(3, breakPointCount);