| // 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. |
| // Check that initializers of static const fields are compile time constants. |
| |
| // @dart = 2.9 |
| |
| import "package:expect/expect.dart"; |
| |
| class CanonicalConstTest { |
| static const A = const C1(); |
| static const B = const C2(); |
| |
| static testMain() { |
| Expect.identical(null, null); |
| Expect.isFalse(identical(null, 0)); |
| Expect.identical(1, 1); |
| Expect.isFalse(identical(1, 2)); |
| Expect.identical(true, true); |
| Expect.identical("so", "so"); |
| Expect.identical(const Object(), const Object()); |
| Expect.isFalse(identical(const Object(), const C1())); |
| Expect.identical(const C1(), const C1()); |
| Expect.identical(A, const C1()); |
| Expect.isFalse(identical(const C1(), const C2())); |
| Expect.identical(B, const C2()); |
| Expect.isFalse(identical(const [2, 1], const [1, 2])); |
| Expect.identical(const <int>[1, 2], const <int>[1, 2]); |
| Expect.identical(const <Object>[1, 2], const <Object>[1, 2]); |
| Expect.isFalse(identical(const <int>[1, 2], const <double>[1.0, 2.0])); |
| Expect.identical(const {"a": 1, "b": 2}, const {"a": 1, "b": 2}); |
| Expect.isFalse(identical(const {"a": 1, "b": 2}, const {"a": 2, "b": 2})); |
| } |
| } |
| |
| class C1 { |
| const C1(); |
| } |
| |
| class C2 extends C1 { |
| const C2() : super(); |
| } |
| |
| main() { |
| CanonicalConstTest.testMain(); |
| } |