blob: 812db2b8f7dd3405b3a7b1e890f9bb48ea4e8b8f [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
34var p = Promise.resolve();
35p.then(f);
36p.then(call_f_with_deeper_stack);
37
38// Schedule microtask to check against expectation at the end.
39function testDone(iteration) {
40 function checkResult() {
41 try {
42 assertTrue(iteration < 10);
43 if (expected.length == log.length) {
44 assertEquals(expected, log);
45 } else {
46 testDone(iteration + 1);
47 }
48 } catch (e) {
49 %AbortJS(e + "\n" + e.stack);
50 }
51 }
52
53 %EnqueueMicrotask(checkResult);
54}
55
56testDone(0);