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 --ignition-generators
6
7var Debug = debug.Debug;
8
9var break_count = 0;
10var exception = null;
11
12function listener(event, exec_state, event_data, data) {
13  if (event != Debug.DebugEvent.Break) return;
14  try {
15    break_count++;
16    var line = exec_state.frame(0).sourceLineText();
17    assertTrue(line.indexOf(`B${break_count}`) > 0);
18  } catch (e) {
19    exception = e;
20  }
21}
22
23Debug.setListener(listener);
24
25function* g() {
26  yield 1;
27}
28
29function* f() {
30  yield* g();                    // B1
31  assertEquals(2, break_count);  // B2
32  return 1;                      // B3
33}
34
35Debug.setBreakPoint(f, 1);
36Debug.setBreakPoint(f, 2);
37Debug.setBreakPoint(f, 3);
38
39for (let _ of f()) { }
40
41assertEquals(3, break_count);
42assertNull(exception);
43
44Debug.setListener(null);
45