| // 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 Note that a parameter that is not used in a superexpression that |
| * is restricted to certain types can be a constant of any type. For example |
| * class A { |
| * final m; |
| * const A(this.m); |
| * } |
| * can be instantiated via const A(const[]); |
| * |
| * @description Test that different types of constants are valid parameters |
| * of constant constructor if this parameter is not used in superexpression |
| * |
| * @author sgrekhov@unipro.ru |
| */ |
| import "../../../../Utils/expect.dart"; |
| |
| class A { |
| final m; |
| const A(this.m); |
| } |
| |
| main() { |
| const a1 = const A(1); |
| const a2 = const A(""); |
| const a3 = const A(null); |
| const a4 = const A(false); |
| |
| const x1 = const A(a1); |
| const x2 = const A(a2); |
| const x3 = const A(a3); |
| const x4 = const A(a4); |
| |
| Expect.equals(1, x1.m.m); |
| Expect.equals("", x2.m.m); |
| Expect.equals(null, x3.m.m); |
| Expect.equals(false, x4.m.m); |
| } |