blob: 807974bbc11c0c31b8cee4b54a1d1f5530a43697 [file] [log] [blame]
Ben Murdochda12d292016-06-02 14:46:10 +01001// Copyright 2016 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
5// Flags: --expose-debug-as debug
6
7Debug = debug.Debug
8
9var exception = null;
10var break_count = 0;
11
12function listener(event, exec_state, event_data, data) {
13 if (event != Debug.DebugEvent.Break) return;
14 try {
15 print(event_data.sourceLineText());
16 var column = event_data.sourceColumn();
17 assertTrue(event_data.sourceLineText().indexOf(
18 `Break ${break_count++}. ${column}.`) > 0);
19 exec_state.prepareStep(Debug.StepAction.StepIn);
20 } catch (e) {
21 print(e + e.stack);
22 exception = e;
23 }
24};
25
26function f() {
27 var a = 1; // Break 2. 10.
28 // This return statement emits no bytecode instruction for the evaluation of
29 // the to-be-returned expression. Therefore we cannot set a break location
30 // before the statement and a second break location immediately before
31 // returning to the caller.
32 return a;
33} // Break 3. 0.
34
35Debug.setListener(listener);
36debugger; // Break 0. 0.
37f(); // Break 1. 0.
38Debug.setListener(null); // Break 4. 0.
39
40assertNull(exception);
41assertEquals(5, break_count);