blob: ed269a9d7d6db79f3a323574969a247152c77199 [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
5// Flags: --expose-debug-as debug --allow-natives-syntax
6
7var Debug = debug.Debug;
8var expected = ["debugger;", "var x = y;", "debugger;", "var x = y;"];
9var log = [];
10
11function listener(event, exec_state, event_data, data) {
12 if (event != Debug.DebugEvent.Break) return;
13 try {
14 log.push(exec_state.frame(0).sourceLineText().trimLeft());
15 exec_state.prepareStep(Debug.StepAction.StepNext);
16 } catch (e) {
17 %AbortJS(e + "\n" + e.stack);
18 }
19}
20
21Debug.setListener(listener);
22
23function f() {
24 var a = 1;
25 debugger;
26 var x = y;
27 print(x);
28}
29
30function call_f_with_deeper_stack() {
31 (() => () => () => f())()()();
32}
33
34Promise.resolve().then(f).catch(call_f_with_deeper_stack);
35
36// Schedule microtask to check against expectation at the end.
37function testDone(iteration) {
38 function checkResult() {
39 try {
40 assertTrue(iteration < 10);
41 if (expected.length == log.length) {
42 assertEquals(expected, log);
43 } else {
44 testDone(iteration + 1);
45 }
46 } catch (e) {
47 %AbortJS(e + "\n" + e.stack);
48 }
49 }
50
51 %EnqueueMicrotask(checkResult);
52}
53
54testDone(0);