blob: c10ce62b81cf025621faf71b4b3040d630ec0c69 [file] [log] [blame]
// 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();
}