blob: 02ad16f6574888c3f9f892ecb2fe04dd648a47f0 [file] [log] [blame]
// Copyright (c) 2018, 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.
/*@testedFeatures=inference*/
library test;
class NullEquality {
@override
Null operator ==(Object other) => null;
}
class SubNullEquality extends NullEquality {
void test() {
var /*@ type=bool* */ super_equals_self =
super /*@target=NullEquality::==*/ == this;
var /*@ type=bool* */ super_equals_null =
super /*@target=NullEquality::==*/ == null;
var /*@ type=bool* */ super_not_equals_self =
super /*@target=NullEquality::==*/ != this;
var /*@ type=bool* */ super_not_equals_null =
super /*@target=NullEquality::==*/ != null;
}
}
test() {
NullEquality n = new NullEquality();
var /*@ type=bool* */ equals_self = n /*@target=NullEquality::==*/ == n;
var /*@ type=bool* */ equals_null = n /*@target=NullEquality::==*/ == null;
var /*@ type=bool* */ null_equals = null /*@target=Object::==*/ == n;
var /*@ type=bool* */ not_equals_self = n /*@target=NullEquality::==*/ != n;
var /*@ type=bool* */ not_equals_null = n /*@target=NullEquality::==*/ != null;
var /*@ type=bool* */ null_not_equals = null /*@target=Object::==*/ != n;
}
main() {
test();
new SubNullEquality(). /*@target=SubNullEquality::test*/ test();
}