blob: 89276b05eeb183ca7699ebbc9d56bc5ab464513f [file] [log] [blame]
// 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,
};