OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 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 | 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: --noalways-opt |
| 6 |
5 var Debug = debug.Debug; | 7 var Debug = debug.Debug; |
6 var breakPointCount = 0; | 8 var breakPointCount = 0; |
7 | 9 |
8 function listener(event, exec_state, event_data, data) { | 10 function listener(event, exec_state, event_data, data) { |
9 if (event != Debug.DebugEvent.Break) return; | 11 if (event != Debug.DebugEvent.Break) return; |
10 ++breakPointCount; | 12 ++breakPointCount; |
11 try { | 13 try { |
12 if (breakPointCount === 1) { | 14 if (breakPointCount === 1) { |
13 assertEquals( | 15 assertEquals( |
14 "inner", exec_state.frame(0).evaluate("inner").value()); | 16 "inner", exec_state.frame(0).evaluate("inner").value()); |
15 assertThrows(() => exec_state.frame(0).evaluate("letInner").value(), | 17 // Variables in TDZ have 'undefined' as their values. |
16 ReferenceError); | 18 assertEquals(undefined, exec_state.frame(0).evaluate("letInner").value()); |
17 assertThrows(() => exec_state.frame(0).evaluate("constInner").value(), | 19 assertEquals(undefined, exec_state.frame(0).evaluate("constInner").value()
); |
18 ReferenceError); | |
19 | 20 |
20 assertEquals("outer", exec_state.frame(0).evaluate("outer").value()); | 21 assertEquals("outer", exec_state.frame(0).evaluate("outer").value()); |
21 assertEquals( | 22 assertEquals( |
22 "const outer", exec_state.frame(0).evaluate("constOuter").value()); | 23 "const outer", exec_state.frame(0).evaluate("constOuter").value()); |
23 assertEquals( | 24 assertEquals( |
24 "let outer", exec_state.frame(0).evaluate("letOuter").value()); | 25 "let outer", exec_state.frame(0).evaluate("letOuter").value()); |
25 | 26 |
26 assertEquals("outer", exec_state.frame(1).evaluate("outer").value()); | 27 assertEquals("outer", exec_state.frame(1).evaluate("outer").value()); |
27 assertEquals( | 28 assertEquals( |
28 "const outer", exec_state.frame(1).evaluate("constOuter").value()); | 29 "const outer", exec_state.frame(1).evaluate("constOuter").value()); |
29 assertEquals( | 30 assertEquals( |
30 "let outer", exec_state.frame(1).evaluate("letOuter").value()); | 31 "let outer", exec_state.frame(1).evaluate("letOuter").value()); |
31 | 32 |
32 assertThrows(() => exec_state.frame(0).evaluate("withVar").value(), | 33 // Variables in TDZ have 'undefined' as their values. |
33 ReferenceError); | 34 assertEquals(undefined, exec_state.frame(0).evaluate("withVar").value()); |
34 | 35 |
35 } else if (breakPointCount === 2) { | 36 } else if (breakPointCount === 2) { |
36 assertEquals( | 37 assertEquals( |
37 "inner", exec_state.frame(0).evaluate("inner").value()); | 38 "inner", exec_state.frame(0).evaluate("inner").value()); |
38 assertThrows(() => exec_state.frame(0).evaluate("letInner").value(), | 39 // Variables in TDZ have 'undefined' as their values. |
39 ReferenceError); | 40 assertEquals(undefined, exec_state.frame(0).evaluate("letInner").value()); |
40 assertThrows(() => exec_state.frame(0).evaluate("constInner").value(), | 41 assertEquals(undefined, exec_state.frame(0).evaluate("constInner").value()
); |
41 ReferenceError); | |
42 | 42 |
43 assertEquals(57, exec_state.frame(0).evaluate("x").value()); | 43 assertEquals(57, exec_state.frame(0).evaluate("x").value()); |
44 assertEquals(100, exec_state.frame(0).evaluate("y").value()); | 44 assertEquals(100, exec_state.frame(0).evaluate("y").value()); |
45 | 45 |
46 // From breakPointCount === 1 and later, it's not possible to access | 46 // From breakPointCount === 1 and later, it's not possible to access |
47 // earlier framestates. | 47 // earlier framestates. |
48 assertEquals("outer", exec_state.frame(0).evaluate("outer").value()); | 48 assertEquals("outer", exec_state.frame(0).evaluate("outer").value()); |
49 assertEquals( | 49 assertEquals( |
50 "const outer", exec_state.frame(0).evaluate("constOuter").value()); | 50 "const outer", exec_state.frame(0).evaluate("constOuter").value()); |
51 assertEquals( | 51 assertEquals( |
(...skipping 11 matching lines...) Expand all Loading... |
63 assertEquals( | 63 assertEquals( |
64 "const inner", exec_state.frame(0).evaluate("constInner").value()); | 64 "const inner", exec_state.frame(0).evaluate("constInner").value()); |
65 | 65 |
66 } else if (breakPointCount === 4) { | 66 } else if (breakPointCount === 4) { |
67 assertEquals( | 67 assertEquals( |
68 "oop", exec_state.frame(0).evaluate("error.message").value()); | 68 "oop", exec_state.frame(0).evaluate("error.message").value()); |
69 assertEquals( | 69 assertEquals( |
70 "Error", | 70 "Error", |
71 exec_state.frame(0).evaluate("error.constructor.name").value()); | 71 exec_state.frame(0).evaluate("error.constructor.name").value()); |
72 assertEquals("floof", exec_state.frame(0).evaluate("bun").value()); | 72 assertEquals("floof", exec_state.frame(0).evaluate("bun").value()); |
73 assertThrows(() => exec_state.frame(0).evaluate("cow").value(), | 73 // Variables in TDZ have 'undefined' as their values. |
74 ReferenceError); | 74 assertEquals(undefined, exec_state.frame(0).evaluate("cow").value()) |
75 | 75 |
76 assertEquals("outer", exec_state.frame(0).evaluate("outer").value()); | 76 assertEquals("outer", exec_state.frame(0).evaluate("outer").value()); |
77 assertEquals( | 77 assertEquals( |
78 "const outer", exec_state.frame(0).evaluate("constOuter").value()); | 78 "const outer", exec_state.frame(0).evaluate("constOuter").value()); |
79 assertEquals( | 79 assertEquals( |
80 "let outer", exec_state.frame(0).evaluate("letOuter").value()); | 80 "let outer", exec_state.frame(0).evaluate("letOuter").value()); |
81 } | 81 } |
82 } catch (e) { | 82 } catch (e) { |
83 print(e.stack); | 83 print(e.stack); |
84 quit(1); | 84 quit(1); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 | 128 |
129 test(). | 129 test(). |
130 then(x => { | 130 then(x => { |
131 Debug.setListener(null); | 131 Debug.setListener(null); |
132 }). | 132 }). |
133 catch(error => { | 133 catch(error => { |
134 print(error.stack); | 134 print(error.stack); |
135 quit(1); | 135 quit(1); |
136 Debug.setListener(null); | 136 Debug.setListener(null); |
137 }); | 137 }); |
OLD | NEW |