blob: 7d85c029496b38e59d6b8e8d31dae7a572ef44f5 [file] [log] [blame]
/*
* Copyright (c) 2020, 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.
*/
/**
* @assertion In legacy mode, an override of operator== with no explicit
* parameter type inherits the parameter type of the overridden method if any
* override of operator== between the overriding method and Object.== has an
* explicit parameter type. Otherwise, the parameter type of the overriding
* method is dynamic.
*
* @description Checks that in legacy mode, an override of operator== with no
* explicit parameter type inherits the parameter type of the overridden method
* if any override of operator== between the overriding method and Object.== has
* an explicit parameter type
* @author sgrekhov@unipro.ru
* @issue 41283
*/
// Requirements=nnbd-strong
class A {
bool operator ==(covariant A other) => true;
}
class C extends A {
bool operator ==(other) => true;
}
main() {
C c = new C();
A a = new A();
c == a;
c == "c";
// ^^^
// [analyzer] unspecified
// [cfe] unspecified
}