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