| // Copyright (c) 2015, 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. |
| |
| // @dart = 2.7 |
| |
| // This program has many similar constants that should all have distinct |
| // identities. They are sufficiently similar to have name collisions and need |
| // ordering by constant value. |
| |
| import "package:expect/expect.dart"; |
| |
| enum E { A, B, C, D } |
| |
| class Z { |
| final a, b, c, d, e, f; |
| const Z({this.a: 1, this.b: 1, this.c: 1, this.d: 1, this.e: 1, this.f: 1}); |
| } |
| |
| const c1 = const {}; |
| const c2 = const <int, int>{}; |
| const c3 = const <dynamic, int>{}; |
| const c4 = const <int, dynamic>{}; |
| const l1 = const []; |
| const l2 = const <int>[]; |
| const l3 = const <String>[]; |
| const l4 = const <num>[]; |
| |
| const ll1 = const [1, 2, 3, 4, 5, 6, 7]; |
| const ll2 = const [1, 8, 3, 4, 5, 6, 7]; |
| const ll3 = const [1, 2, 8, 4, 5, 6, 7]; |
| const ll4 = const [1, 2, 3, 4, 8, 6, 7]; |
| |
| const m1 = const <dynamic, dynamic>{1: 1, 2: 2}; |
| const m2 = const <dynamic, dynamic>{1: 2, 2: 1}; |
| const m3 = const <dynamic, dynamic>{1: 1, 2: 1}; |
| const m4 = const <dynamic, dynamic>{1: 2, 2: 2}; |
| const m5 = const <dynamic, dynamic>{2: 1, 1: 2}; |
| const m6 = const <dynamic, dynamic>{2: 2, 1: 1}; |
| const m7 = const <dynamic, dynamic>{2: 1, 1: 1}; |
| const m8 = const <dynamic, dynamic>{2: 2, 1: 2}; |
| const m9 = const <int, int>{1: 1, 2: 2}; |
| const mA = const <int, int>{1: 2, 2: 1}; |
| const mB = const <int, int>{1: 1, 2: 1}; |
| const mC = const <int, int>{1: 2, 2: 2}; |
| |
| const mE1 = const {E.A: E.B}; |
| const mE2 = const {E.A: E.C}; |
| const mE3 = const {E.A: 0, E.B: 0}; |
| const mE4 = const {E.A: 0, E.C: 0}; |
| const mE5 = const {E.A: 0, E.B: 0, E.C: 4}; |
| const mE6 = const {E.A: 0, E.B: 0, E.C: 2}; |
| const mE7 = const {E.A: 0, E.B: 0, E.C: 3}; |
| const mE8 = const {E.A: 0, E.B: 0, E.C: 1}; |
| |
| const z1 = const Z(f: 3); |
| const z2 = const Z(f: 2); |
| const z3 = const Z(f: 1); |
| const z4 = const Z(e: 2); |
| const z5 = const Z(d: 3); |
| const z6 = const Z(d: 2); |
| |
| makeAll() => { |
| 'E.A': E.A, |
| 'E.B': E.B, |
| 'E.C': E.C, |
| 'E.D': E.D, |
| 'c1': c1, |
| 'c2': c2, |
| 'c3': c3, |
| 'c4': c4, |
| 'l1': l1, |
| 'l2': l2, |
| 'l3': l3, |
| 'l4': l4, |
| 'll1': ll1, |
| 'll2': ll2, |
| 'll3': ll3, |
| 'l4': ll4, |
| 'm1': m1, |
| 'm2': m2, |
| 'm3': m3, |
| 'm4': m4, |
| 'm5': m5, |
| 'm6': m6, |
| 'm7': m7, |
| 'm8': m8, |
| 'm9': m9, |
| 'mA': mA, |
| 'mB': mB, |
| 'mC': mC, |
| 'mE1': mE1, |
| 'mE2': mE2, |
| 'mE3': mE3, |
| 'mE4': mE4, |
| 'mE5': mE5, |
| 'mE6': mE6, |
| 'mE7': mE7, |
| 'mE8': mE8, |
| 'z1': z1, |
| 'z2': z2, |
| 'z3': z3, |
| 'z4': z4, |
| 'z5': z5, |
| 'z6': z6, |
| }; |
| |
| main() { |
| var all1 = makeAll(); |
| var all2 = makeAll(); |
| |
| for (var name1 in all1.keys) { |
| var e1 = all1[name1]; |
| for (var name2 in all2.keys) { |
| if (name1 == name2) continue; |
| var e2 = all2[name2]; |
| Expect.isFalse( |
| identical(e1, e2), 'Different instances $name1: $e1 $name2: $e2'); |
| } |
| } |
| } |