| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import "package:expect/expect.dart"; | |
| class A { | |
| var _x, _y; | |
| A(x, [y = 10]) : _x = x++, _y = y++ { | |
| // Check that value of modified constructor parameters | |
| // is remembered in the constructor body. | |
| Expect.equals(x, _x + 1); | |
| Expect.equals(y, _y + 1); | |
| } | |
| } | |
| class B extends A { | |
| var _a, _b; | |
| // The super call in the middle of the initializer list conceptually | |
| // forces two super call chains, one for initializer list and a second | |
| // one for the constructor bodies. | |
| B(a, b) : _a = a++, _b = b++, super(a + b++) { | |
| Expect.equals(a, _a + 1); | |
| Expect.equals(b, _b + 2); | |
| Expect.equals(a + (b - 2), _x - 1); | |
| } | |
| } | |
| main() { | |
| dynamic o = new B(3, 5); | |
| Expect.equals(3, o._a); | |
| Expect.equals(5, o._b); | |
| Expect.equals(10, o._x); | |
| Expect.equals(10, o._y); | |
| o = new A(3); | |
| Expect.equals(3, o._x); | |
| Expect.equals(10, o._y); | |
| } |