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
8
9var debug_step = 0;
10var failure = null;
11
12function listener(event, exec_state, event_data, data) {
13  if (event != Debug.DebugEvent.Break) return;
14  try {
15    if (debug_step == 0) {
16      assertEquals(1, exec_state.frame(0).evaluate('a').value());
17      assertEquals(3, exec_state.frame(0).evaluate('b').value());
18      exec_state.frame(0).evaluate("a = 4").value();
19      debug_step++;
20    } else {
21      assertEquals(4, exec_state.frame(0).evaluate('a').value());
22      assertEquals(3, exec_state.frame(0).evaluate('b').value());
23      exec_state.frame(0).evaluate("b = 5").value();
24    }
25  } catch (e) {
26    failure = e;
27  }
28}
29
30Debug.setListener(listener);
31
32function* generator(a, b) {
33  var b = 3;  // Shadows a parameter.
34  debugger;
35  yield a;
36  yield b;
37  debugger;
38  return b;
39}
40
41var foo = generator(1, 2);
42
43assertEquals(4, foo.next().value);
44assertEquals(3, foo.next().value);
45assertEquals(5, foo.next().value);
46assertNull(failure);
47
48Debug.setListener(null);
49