| // Copyright (c) 2016, 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.md file. |
| |
| import 'package:expect/expect.dart'; |
| |
| String log; |
| init() { |
| log = ''; |
| } |
| |
| logit(msg) { |
| return log = '$log$msg'; |
| } |
| |
| class Base { |
| var b; |
| Base.arg0() : b = logit('b') { |
| logit('B'); |
| } |
| Base.arg1(a) : b = logit('b') { |
| logit('B'); |
| } |
| Base.arg2(a, b) : b = logit('b') { |
| logit('B'); |
| } |
| } |
| |
| class Sub extends Base { |
| var x; |
| var s; |
| Sub.arg0() |
| : x = logit('x'), |
| super.arg0(), |
| s = logit('s') { |
| logit('S'); |
| } |
| Sub.arg1(a) |
| : x = logit('x'), |
| super.arg1(logit('1')), |
| s = logit('s') { |
| logit('S'); |
| } |
| Sub.arg2(a, b) |
| : x = logit('x'), |
| super.arg2(logit('1'), logit('2')), |
| s = logit('s') { |
| logit('S'); |
| } |
| } |
| |
| test(fun(), String result) { |
| init(); |
| fun(); |
| Expect.isTrue(log == result); |
| } |
| |
| main() { |
| test(() => new Sub.arg0(), 'xsbBS'); |
| test(() => new Sub.arg1(1), 'x1sbBS'); |
| test(() => new Sub.arg2(1, 2), 'x12sbBS'); |
| } |