Chromium Code Reviews| Index: test/mjsunit/harmony/debug-step-into-constructor.js |
| diff --git a/test/mjsunit/harmony/debug-step-into-constructor.js b/test/mjsunit/harmony/debug-step-into-constructor.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..19459d1e32166588921e2b01d95f41eee2f3ae87 |
| --- /dev/null |
| +++ b/test/mjsunit/harmony/debug-step-into-constructor.js |
| @@ -0,0 +1,114 @@ |
| +// Copyright 2014 the V8 project authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// Flags: --expose-debug-as debug --harmony-classes |
| + |
| +'use strict'; |
| + |
| +var Debug = debug.Debug |
| +var done, stepCount; |
| + |
| +function listener(event, execState, eventData, data) { |
| + if (event == Debug.DebugEvent.Break) { |
| + if (!done) { |
| + execState.prepareStep(Debug.StepAction.StepInto); |
| + var s = execState.frame().sourceLineText(); |
| + print(s); |
| + assertTrue(s.indexOf('// ' + stepCount + '.') !== -1); |
| + stepCount++; |
| + } |
| + } |
| +}; |
| + |
| +Debug.setListener(listener); |
| + |
| + |
| +class Base { |
| + constructor() { |
| + var x = 1; // 1. |
| + var y = 2; // 2. |
| + done = true; // 3. |
| + } |
| +} |
| + |
| +class Derived extends Base {} |
| + |
| + |
| +(function TestBreakPointInConstructor() { |
| + done = false; |
| + stepCount = 1; |
| + var bp = Debug.setBreakPoint(Base, 0); |
|
Dmitry Lomov (no reviews)
2014/11/14 17:19:15
You can just use 'debugger;' in the places where y
arv (Not doing code reviews)
2014/11/14 17:24:00
True. In this specific case, I wanted to make sure
Dmitry Lomov (no reviews)
2014/11/14 17:30:59
Ah right, gotcha. I'll leave it up to you.
|
| + |
| + new Base(); |
| + assertEquals(4, stepCount); |
| + |
| + Debug.clearBreakPoint(bp); |
| +})(); |
| + |
| + |
| +(function TestDefaultConstructor() { |
| + done = false; |
| + stepCount = 1; |
| + |
| + var bp = Debug.setBreakPoint(Base, 0); |
| + new Derived(); |
| + assertEquals(4, stepCount); |
| + |
| + Debug.clearBreakPoint(bp); |
| +})(); |
| + |
| + |
| +(function TestStepInto() { |
| + done = false; |
| + stepCount = 0; |
| + |
| + function f() { |
| + new Derived(); // 0. |
| + } |
| + |
| + var bp = Debug.setBreakPoint(f, 0); |
| + f(); |
| + assertEquals(4, stepCount); |
| + |
| + Debug.clearBreakPoint(bp); |
| +})(); |
| + |
| + |
| +(function TestExtraIndirection() { |
| + done = false; |
| + stepCount = 0; |
| + |
| + class Derived2 extends Derived {} |
| + |
| + function f() { |
| + new Derived2(); // 0. |
| + } |
| + |
| + var bp = Debug.setBreakPoint(f, 0); |
| + f(); |
| + assertEquals(4, stepCount); |
| + |
| + Debug.clearBreakPoint(bp); |
| +})(); |
| + |
| + |
| +(function TestBoundClass() { |
| + done = false; |
| + stepCount = 0; |
| + |
| + var bound = Derived.bind(null); |
| + |
| + function f() { |
| + new bound(); // 0. |
| + } |
| + |
| + var bp = Debug.setBreakPoint(f, 0); |
| + f(); |
| + assertEquals(4, stepCount); |
| + |
| + Debug.clearBreakPoint(bp); |
| +})(); |
| + |
| + |
| +Debug.setListener(null); |