library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart:23:28: Error: The parameter 'x' of the method 'D.f5' has type 'String', which does not match the corresponding type, 'A', in the overridden method, 'C.f5'.
//  - 'A' is from 'pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart'.
// Change to a supertype of 'A', or, for a covariant parameter, a subtype.
//   void f5(covariant String x) {}
//                            ^
// pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart:14:8: Context: This is the overridden method ('f5').
//   void f5(covariant A x) {}
//        ^
//
// pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart:22:13: Error: The parameter 'x' of the method 'D.f4' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.f4'.
//  - 'B' is from 'pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart'.
//  - 'A' is from 'pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart'.
// Change to a supertype of 'A', or, for a covariant parameter, a subtype.
//   void f4(B x) {} // Not covariant
//             ^
// pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart:13:8: Context: This is the overridden method ('f4').
//   void f4(A x) {}
//        ^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  synthetic constructor •() → self::A*
    ;
}
class B extends self::A {
  synthetic constructor •() → self::B*
    ;
}
class C extends core::Object {
  synthetic constructor •() → self::C*
    ;
  method f1(covariant self::A* x) → void
    ;
  method f2(self::A* x) → void
    ;
  method f3(covariant self::A* x) → void
    ;
  method f4(self::A* x) → void
    ;
  method f5(covariant self::A* x) → void
    ;
  method f6(covariant self::B* x) → void
    ;
}
class D extends self::C {
  synthetic constructor •() → self::D*
    ;
  method f1(covariant self::B* x) → void
    ;
  method f2(covariant self::B* x) → void
    ;
  method f3(covariant self::B* x) → void
    ;
  method f4(self::B* x) → void
    ;
  method f5(covariant core::String* x) → void
    ;
  method f6(covariant self::A* x) → void
    ;
}
static method main() → dynamic
  ;
