| // Copyright (c) 2023, 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. |
| |
| void topLevel() {} |
| |
| class Const { |
| const Const(); |
| } |
| |
| class A { |
| const A(); |
| int get hashCode => super.hashCode + 1; |
| } |
| |
| class B { |
| const B(); |
| bool operator ==(Object other) => super == other; |
| } |
| |
| class C { |
| const C(); |
| int get hashCode => super.hashCode + 1; |
| bool operator ==(Object other) => super == other; |
| } |
| |
| const a1 = A() == Const(); // Error |
| const a2 = Const() == A(); // Ok |
| const a3 = A() != Const(); // Error |
| const a4 = Const() != A(); // Ok |
| const a5 = A() == null; // Ok |
| const a6 = null == A(); // Ok |
| const a7 = A() != null; // Ok |
| const a8 = null != A(); // Ok |
| |
| const b1 = B() == Const(); // Error |
| const b2 = Const() == B(); // Ok |
| const b3 = B() != Const(); // Error |
| const b4 = Const() != B(); // Ok |
| const b5 = B() == null; // Ok |
| const b6 = null == B(); // Ok |
| const b7 = B() != null; // Ok |
| const b8 = null != B(); // Ok |
| |
| const c1 = C() == Const(); // Error |
| const c2 = Const() == C(); // Ok |
| const c3 = C() != Const(); // Error |
| const c4 = Const() != C(); // Ok |
| const c5 = C() == null; // Ok |
| const c6 = null == C(); // Ok |
| const c7 = C() != null; // Ok |
| const c8 = null != C(); // Ok |
| |
| const d1 = true == Const(); // Ok |
| const d2 = Const() == true; // Ok |
| const d3 = true != Const(); // Ok |
| const d4 = Const() != true; // Ok |
| |
| const e1 = 0 == Const(); // Ok |
| const e2 = Const() == 0; // Ok |
| const e3 = 0 != Const(); // Ok |
| const e4 = Const() != 0; // Ok |
| |
| const f1 = '' == Const(); // Ok |
| const f2 = Const() == ''; // Ok |
| const f3 = '' != Const(); // Ok |
| const f4 = Const() != ''; // Ok |
| |
| const g1 = #a == Const(); // Ok |
| const g2 = Const() == #a; // Ok |
| const g3 = #a != Const(); // Ok |
| const g4 = Const() != #a; // Ok |
| |
| const h1 = const Symbol('b') == Const(); // Ok |
| const h2 = Const() == const Symbol('b'); // Ok |
| const h3 = const Symbol('b') != Const(); // Ok |
| const h4 = Const() != const Symbol('b'); // Ok |
| |
| const i1 = Object == Const(); // Ok |
| const i2 = Const() == Object; // Ok |
| const i3 = Object != Const(); // Ok |
| const i4 = Const() != Object; // Ok |
| |
| const j1 = [] == Const(); // Ok |
| const j2 = Const() == []; // Ok |
| const j3 = [] != Const(); // Ok |
| const j4 = Const() != []; // Ok |
| |
| const k1 = {} == Const(); // Ok |
| const k2 = Const() == {}; // Ok |
| const k3 = {} != Const(); // Ok |
| const k4 = Const() != {}; // Ok |
| |
| const l1 = {0} == Const(); // Ok |
| const l2 = Const() == {0}; // Ok |
| const l3 = {0} != Const(); // Ok |
| const l4 = Const() != {0}; // Ok |
| |
| const n1 = topLevel == Const(); // Ok |
| const n2 = Const() == topLevel; // Ok |
| const n3 = topLevel != Const(); // Ok |
| const n4 = Const() != topLevel; // Ok |
| |
| const o1 = 0.5 == Const(); // Ok |
| const o2 = Const() == 0.5; // Ok |
| const o3 = 0.5 != Const(); // Ok |
| const o4 = Const() != 0.5; // Ok |
| |
| const set1 = { |
| null, // Ok |
| Const(), // Ok |
| true, // Ok |
| 0, // Ok |
| '', // Ok |
| #a, // Ok |
| const Symbol('b'), // Ok |
| Object, // Ok |
| [], // Ok |
| {}, // Ok |
| {0}, // Ok |
| topLevel, // Ok |
| }; |
| |
| const set2 = { |
| A(), // Error |
| }; |
| |
| const set3 = { |
| B(), // Error |
| }; |
| |
| const set4 = { |
| C(), // Error |
| }; |
| |
| const set5 = { |
| 0.5, // Error, |
| }; |
| |
| const map1 = { |
| null: 0, // Ok |
| Const(): 0, // Ok |
| true: 0, // Ok |
| 0: 0, // Ok |
| '': 0, // Ok |
| #a: 0, // Ok |
| const Symbol('b'): 0, // Ok |
| Object: 0, // Ok |
| []: 0, // Ok |
| {}: 0, // Ok |
| {0}: 0, // Ok |
| topLevel: 0, // Ok |
| }; |
| |
| const map2 = { |
| A(): 0, // Error |
| }; |
| |
| const map3 = { |
| B(): 0, // Error |
| }; |
| |
| const map4 = { |
| C(): 0, // Error |
| }; |
| |
| const map5 = { |
| 0.5: 0, // Error, |
| }; |