• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// 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 --allow-natives-syntax --harmony-async-await
6
7var Debug = debug.Debug;
8var step_count = 0;
9
10function listener(event, execState, eventData, data) {
11  if (event != Debug.DebugEvent.Break) return;
12  try {
13    var line = execState.frame(0).sourceLineText();
14    print(line);
15    var [match, expected_count, step] = /\/\/ B(\d) (\w+)$/.exec(line);
16    assertEquals(step_count++, parseInt(expected_count));
17    if (step != "Continue") execState.prepareStep(Debug.StepAction[step]);
18  } catch (e) {
19    print(e, e.stack);
20    quit(1);
21  }
22}
23
24Debug.setListener(listener);
25
26var late_resolve;
27
28function g() {
29  return new Promise(  // B3 StepOut
30    function(res, rej) {
31      late_resolve = res;
32    }
33  );
34}
35
36async function f() {
37  var a = 1;
38  debugger;            // B0 StepNext
39  a +=                 // B1 StepNext
40       await           // B4 StepNext
41             g();      // B2 StepIn
42  return a;            // B5 StepNext
43}                      // B6 Continue
44
45f();
46
47late_resolve(3);
48
49%RunMicrotasks();
50
51assertEquals(7, step_count);
52