1// Copyright 2014 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
8var exception = null;
9var yields = 0;
10
11function listener(event, exec_state, event_data, data) {
12  if (event != Debug.DebugEvent.Break) return;
13  try {
14    var source = exec_state.frame(0).sourceLineText();
15    print(source);
16    if (/stop stepping/.test(source)) return;
17    if (/yield/.test(source)) yields++;
18    exec_state.prepareStep(Debug.StepAction.StepIn);
19  } catch (e) {
20    print(e, e.stack);
21    exception = e;
22  }
23};
24
25Debug.setListener(listener);
26
27function* g() {
28  for (var i = 0; i < 3; ++i) {
29    yield i;
30  }
31}
32
33var i = g();
34debugger;
35for (var num of g()) {}
36i.next();
37
38print(); // stop stepping
39
40// Not stepped into.
41i.next();
42i.next();
43
44assertNull(exception);
45assertEquals(4, yields);
46