| 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 |