| // 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 If a class [C] in an opted-in library overrides a member, it is an |
| * error if its signature is not a subtype of the types of all overriden members |
| * from all direct super-interfaces (whether legacy or opted-in). This implies |
| * that override checks for a member m may succeed due to a legacy member |
| * signature for [m] in a direct super-interface, even in the case where an |
| * indirect super-interface has a member signature for [m] where the override |
| * would be a compile-time error. |
| * |
| * @description Check that compile error does not appear if legacy class |
| * inherits a getter from two opted in classes with contradictory nullability |
| * information and than this getter is inherited again in the opted in code. |
| * |
| * @Issue 40414,41529 |
| * @author iarkh@unipro.ru |
| */ |
| // Requirements=nnbd-weak |
| |
| import "override_checking_A03_opted_out_lib.dart"; |
| |
| class A extends LEGACY_GETTER_2 { |
| int? get getInt => null; |
| Object? get getObject => null; |
| Function? get getFunction => null; |
| } |
| |
| void testme() {} |
| |
| class B extends LEGACY_GETTER_2 { |
| int get getInt => 1; |
| Object get getObject => 1; |
| Function get getFunction => testme; |
| } |
| |
| main() { |
| A(); |
| B(); |
| } |