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 | |
7 var Debug = debug.Debug; | 5 var Debug = debug.Debug; |
8 var breakPointCount = 0; | 6 var breakPointCount = 0; |
9 | 7 |
10 function listener(event, exec_state, event_data, data) { | 8 function listener(event, exec_state, event_data, data) { |
11 if (event != Debug.DebugEvent.Break) return; | 9 if (event != Debug.DebugEvent.Break) return; |
12 ++breakPointCount; | 10 ++breakPointCount; |
13 try { | 11 try { |
14 if (breakPointCount === 1) { | 12 if (breakPointCount === 1) { |
15 assertEquals( | 13 assertEquals( |
16 "inner", exec_state.frame(0).evaluate("inner").value()); | 14 "inner", exec_state.frame(0).evaluate("inner").value()); |
17 // Variables in TDZ have 'undefined' as their values. | 15 assertThrows(() => exec_state.frame(0).evaluate("letInner").value(), |
18 assertEquals(undefined, exec_state.frame(0).evaluate("letInner").value()); | 16 ReferenceError); |
19 assertEquals(undefined, exec_state.frame(0).evaluate("constInner").value()
); | 17 assertThrows(() => exec_state.frame(0).evaluate("constInner").value(), |
| 18 ReferenceError); |
20 | 19 |
21 assertEquals("outer", exec_state.frame(0).evaluate("outer").value()); | 20 assertEquals("outer", exec_state.frame(0).evaluate("outer").value()); |
22 assertEquals( | 21 assertEquals( |
23 "const outer", exec_state.frame(0).evaluate("constOuter").value()); | 22 "const outer", exec_state.frame(0).evaluate("constOuter").value()); |
24 assertEquals( | 23 assertEquals( |
25 "let outer", exec_state.frame(0).evaluate("letOuter").value()); | 24 "let outer", exec_state.frame(0).evaluate("letOuter").value()); |
26 | 25 |
27 assertEquals("outer", exec_state.frame(1).evaluate("outer").value()); | 26 assertEquals("outer", exec_state.frame(1).evaluate("outer").value()); |
28 assertEquals( | 27 assertEquals( |
29 "const outer", exec_state.frame(1).evaluate("constOuter").value()); | 28 "const outer", exec_state.frame(1).evaluate("constOuter").value()); |
30 assertEquals( | 29 assertEquals( |
31 "let outer", exec_state.frame(1).evaluate("letOuter").value()); | 30 "let outer", exec_state.frame(1).evaluate("letOuter").value()); |
32 | 31 |
33 // Variables in TDZ have 'undefined' as their values. | 32 assertThrows(() => exec_state.frame(0).evaluate("withVar").value(), |
34 assertEquals(undefined, exec_state.frame(0).evaluate("withVar").value()); | 33 ReferenceError); |
35 | 34 |
36 } else if (breakPointCount === 2) { | 35 } else if (breakPointCount === 2) { |
37 assertEquals( | 36 assertEquals( |
38 "inner", exec_state.frame(0).evaluate("inner").value()); | 37 "inner", exec_state.frame(0).evaluate("inner").value()); |
39 // Variables in TDZ have 'undefined' as their values. | 38 assertThrows(() => exec_state.frame(0).evaluate("letInner").value(), |
40 assertEquals(undefined, exec_state.frame(0).evaluate("letInner").value()); | 39 ReferenceError); |
41 assertEquals(undefined, exec_state.frame(0).evaluate("constInner").value()
); | 40 assertThrows(() => 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 // Variables in TDZ have 'undefined' as their values. | 73 assertThrows(() => exec_state.frame(0).evaluate("cow").value(), |
74 assertEquals(undefined, exec_state.frame(0).evaluate("cow").value()) | 74 ReferenceError); |
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 |