blob: 51fac89bf666fb9856c5aa67cf52f1e9409b713f [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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
Ben Murdochda12d292016-06-02 14:46:10 +01005// Flags: --expose-debug-as debug
Ben Murdochb8a8cc12014-11-26 15:28:44 +00006
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());
Ben Murdochda12d292016-06-02 14:46:10 +010018 exec_state.frame(0).evaluate("a = 4").value();
Ben Murdochb8a8cc12014-11-26 15:28:44 +000019 debug_step++;
20 } else {
Ben Murdochda12d292016-06-02 14:46:10 +010021 assertEquals(4, exec_state.frame(0).evaluate('a').value());
Ben Murdochb8a8cc12014-11-26 15:28:44 +000022 assertEquals(3, exec_state.frame(0).evaluate('b').value());
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000023 exec_state.frame(0).evaluate("set_a_to_5()");
Ben Murdochda12d292016-06-02 14:46:10 +010024 exec_state.frame(0).evaluate("b = 5").value();
Ben Murdochb8a8cc12014-11-26 15:28:44 +000025 }
26 } catch (e) {
27 failure = e;
28 }
29}
30
31Debug.setListener(listener);
32
33function* generator(a, b) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000034 function set_a_to_5() { a = 5 }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000035 var b = 3; // Shadows a parameter.
36 debugger;
37 yield a;
38 yield b;
39 debugger;
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000040 yield a;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000041 return b;
42}
43
44var foo = generator(1, 2);
45
Ben Murdochda12d292016-06-02 14:46:10 +010046assertEquals(4, foo.next().value);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000047assertEquals(3, foo.next().value);
48assertEquals(5, foo.next().value);
Ben Murdochda12d292016-06-02 14:46:10 +010049assertEquals(5, foo.next().value);
Ben Murdochb8a8cc12014-11-26 15:28:44 +000050assertNull(failure);
51
52Debug.setListener(null);