| // 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. |
| |
| class CanonicalConstTest { |
| static const A = const C1(); |
| static const B = const C2(); |
| |
| static testMain() { |
| Expect.isTrue(null===null); |
| Expect.isTrue(null!==0); |
| Expect.isTrue(1===1); |
| Expect.isTrue(1!==2); |
| Expect.isTrue(true===true); |
| Expect.isTrue("so"==="so"); |
| Expect.isTrue(const Object()===const Object()); |
| Expect.isTrue(const Object()!==const C1()); |
| Expect.isTrue(const C1()===const C1()); |
| Expect.isTrue(A===const C1()); |
| Expect.isTrue(const C1()!==const C2()); |
| Expect.isTrue(B===const C2()); |
| // TODO(johnlenz): these two values don't currently have the same type |
| // Expect.isTrue(const [1,2] === const List[1,2]); |
| Expect.isTrue(const [2,1] !== const[1,2]); |
| Expect.isTrue(const <int>[1,2] === const <int>[1,2]); |
| Expect.isTrue(const <Object>[1,2] === const <Object>[1,2]); |
| Expect.isTrue(const <int>[1,2] !== const <double>[1.0,2.0]); |
| Expect.isTrue(const {"a":1, "b":2} === const {"a":1, "b":2}); |
| Expect.isTrue(const {"a":1, "b":2} !== const {"a":2, "b":2}); |
| } |
| } |
| |
| class C1 { |
| const C1(); |
| } |
| |
| class C2 extends C1 { |
| const C2() : super(); |
| } |
| |
| main() { |
| CanonicalConstTest.testMain(); |
| } |