// Copyright (c) 2019, 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 a migrated library, override checking must check that an
 * override is consistent with all overridden methods from other migrated
 * libraries in the super-interface chain, since a legacy library is permitted
 * to override otherwise incompatible signatures for a method.
 *
 * @description Check that if generic opted-in class extends generic legacy
 * class, child opted-in class type parameter can extend non-nullable type.
 *
 * @author iarkh@unipro.ru
 */
// Requirements=nnbd-weak
import "../../../../Utils/expect.dart";
import "override_checking_A02_opted_out_lib.dart";

class OptedInt<T extends int> extends LEGACY_CLASS_INT<T> {
 dynamic getParamType() => T;
}

class OptedObject<T extends Object> extends LEGACY_CLASS_OBJECT<T> {
 dynamic getParamType() => T;
}

class OptedFunction<T extends Function> extends LEGACY_CLASS_FUNCTION<T> {
 dynamic getParamType() => T;
}

main() {
 Expect.equals(typeOf<int>(), OptedInt().getParamType());
 Expect.equals(typeOf<int>(), OptedInt<int>().getParamType());

 Expect.equals(typeOf<Object>(), OptedObject().getParamType());
 Expect.equals(typeOf<Object>(), OptedObject<Object>().getParamType());

 Expect.equals(typeOf<Function>(), OptedFunction().getParamType());
 Expect.equals(typeOf<Function>(), OptedFunction<Function>().getParamType());
}
