OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --expose-debug-as debug --debug-eval-readonly-locals | 5 // Flags: --expose-debug-as debug |
6 | 6 |
7 Debug = debug.Debug | 7 Debug = debug.Debug |
8 | 8 |
9 var debug_step = 0; | 9 var debug_step = 0; |
10 var failure = null; | 10 var failure = null; |
11 | 11 |
12 function listener(event, exec_state, event_data, data) { | 12 function listener(event, exec_state, event_data, data) { |
13 if (event != Debug.DebugEvent.Break) return; | 13 if (event != Debug.DebugEvent.Break) return; |
14 try { | 14 try { |
15 if (debug_step == 0) { | 15 if (debug_step == 0) { |
16 assertEquals(1, exec_state.frame(0).evaluate('a').value()); | 16 assertEquals(1, exec_state.frame(0).evaluate('a').value()); |
17 assertEquals(3, exec_state.frame(0).evaluate('b').value()); | 17 assertEquals(3, exec_state.frame(0).evaluate('b').value()); |
18 exec_state.frame(0).evaluate("a = 4").value(); // no effect. | 18 exec_state.frame(0).evaluate("a = 4").value(); |
19 debug_step++; | 19 debug_step++; |
20 } else { | 20 } else { |
21 assertEquals(1, exec_state.frame(0).evaluate('a').value()); | 21 assertEquals(4, exec_state.frame(0).evaluate('a').value()); |
22 assertEquals(3, exec_state.frame(0).evaluate('b').value()); | 22 assertEquals(3, exec_state.frame(0).evaluate('b').value()); |
23 exec_state.frame(0).evaluate("set_a_to_5()"); | 23 exec_state.frame(0).evaluate("b = 5").value(); |
24 exec_state.frame(0).evaluate("b = 5").value(); // no effect. | |
25 } | 24 } |
26 } catch (e) { | 25 } catch (e) { |
27 failure = e; | 26 failure = e; |
28 } | 27 } |
29 } | 28 } |
30 | 29 |
31 Debug.setListener(listener); | 30 Debug.setListener(listener); |
32 | 31 |
33 function* generator(a, b) { | 32 function* generator(a, b) { |
34 function set_a_to_5() { a = 5 } | |
35 var b = 3; // Shadows a parameter. | 33 var b = 3; // Shadows a parameter. |
36 debugger; | 34 debugger; |
37 yield a; | 35 yield a; |
38 yield b; | 36 yield b; |
39 debugger; | 37 debugger; |
40 yield a; | |
41 return b; | 38 return b; |
42 } | 39 } |
43 | 40 |
44 var foo = generator(1, 2); | 41 var foo = generator(1, 2); |
45 | 42 |
46 assertEquals(1, foo.next().value); | 43 assertEquals(4, foo.next().value); |
47 assertEquals(3, foo.next().value); | 44 assertEquals(3, foo.next().value); |
48 assertEquals(5, foo.next().value); | 45 assertEquals(5, foo.next().value); |
49 assertEquals(3, foo.next().value); | |
50 assertNull(failure); | 46 assertNull(failure); |
51 | 47 |
52 Debug.setListener(null); | 48 Debug.setListener(null); |
OLD | NEW |