| // 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 It is a compile-time error if k explicitly specifies a default |
| /// value for an optional parameter. |
| /// @description Checks that it is not an error if redirecting factory |
| /// constructor has optional parameters with no defaults and that actual |
| /// arguments are passed as expected. |
| /// @author ilya |
| |
| import "../../../../Utils/expect.dart"; |
| |
| List expect = []; |
| |
| test(x, y) { |
| Expect.listEquals(expect, [x, y]); |
| } |
| |
| class F { |
| factory F(int x, [int y]) = C; |
| factory F.foo(int x, [int y]) = C.foo; |
| factory F.bar(int x, {int y}) = C.bar; |
| } |
| |
| class C implements F { |
| C(int x, [int y = 0]) { |
| test(x, y); |
| } |
| C.foo(int x, [int y = 0]) { |
| test(x, y); |
| } |
| C.bar(int x, {int y = 0}) { |
| test(x, y); |
| } |
| } |
| |
| main() { |
| expect = [1, 0]; |
| new F(1); |
| expect = [1, 1]; |
| new F(1, 1); |
| expect = [1, 0]; |
| new F.foo(1); |
| expect = [1, 1]; |
| new F.foo(1, 1); |
| expect = [1, 0]; |
| new F.bar(1); |
| expect = [1, 1]; |
| new F.bar(1, y: 1); |
| } |