94c165d189
Closes #51045 Closes #51565 Closes #51566 Closes #51688 Closes #51800 Change-Id: I4a679ef9cf496a22f4fdc2047a2dc4753e796e2b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290320 Commit-Queue: Johnni Winther <johnniwinther@google.com> Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
170 lines
3.5 KiB
Dart
170 lines
3.5 KiB
Dart
// 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,
|
|
};
|