| // Copyright (c) 2011, 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. |
| |
| /** |
| * @assertion A generative constructor may be redirecting, in which case its |
| * only action is to invoke another generative constructor. A redirecting |
| * constructor has no body; instead, it has a redirect clause that specifies |
| * which constructor the invocation is redirected to, and with what arguments. |
| * redirection: |
| * ':' this ('.' identifier)? arguments |
| * ; |
| * @description Checks that constructor specified in a redirect clause is |
| * invoked. |
| * @author vasya |
| */ |
| import "../../../../Utils/expect.dart"; |
| |
| class C { |
| C(foo, bar) : this.init(foo, bar); |
| C.init(foo, bar) : _foo = foo, _bar = bar; |
| |
| C.ctor(foo) : this(foo, 1); |
| |
| var _foo; |
| var _bar; |
| } |
| |
| main() { |
| C c = new C(1,2); |
| Expect.equals(1, c._foo); |
| Expect.equals(2, c._bar); |
| |
| c = new C.ctor(42); |
| Expect.equals(42, c._foo); |
| Expect.equals(1, c._bar); |
| } |