library test /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:16:3: Error: Can't infer types for 'f' as the overridden members don't have a combined signature.
// Try adding explicit types.
//   f(x, {y}) => throw '';
//   ^
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:10:5: Context: This is one of the overridden members.
//   A f(A x, {A? y}) => throw '';
//     ^
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:22:5: Context: This is one of the overridden members.
//   I f(I x, {I? y}) => throw '';
//     ^
//
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:17:3: Error: Can't infer types for 'g' as the overridden members don't have a combined signature.
// Try adding explicit types.
//   g(x, {y}) => throw '';
//   ^
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:11:5: Context: This is one of the overridden members.
//   A g(A x, {A? y}) => throw '';
//     ^
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:23:5: Context: This is one of the overridden members.
//   A g(I x, {I? y}) => throw '';
//     ^
//
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:18:3: Error: Can't infer types for 'h' as the overridden members don't have a combined signature.
// Try adding explicit types.
//   h(x, {y}) => throw '';
//   ^
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:12:5: Context: This is one of the overridden members.
//   A h(A x, {A? y}) => throw '';
//     ^
// pkg/front_end/testcases/inference/inconsistent_overrides.dart:24:5: Context: This is one of the overridden members.
//   A h(A x, {I? y}) => throw '';
//     ^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
  method f(self::A x, {self::A? y = #C1}) → self::A
    return throw "";
  method g(self::A x, {self::A? y = #C1}) → self::A
    return throw "";
  method h(self::A x, {self::A? y = #C1}) → self::A
    return throw "";
}
class B extends self::A implements self::I {
  synthetic constructor •() → self::B
    : super self::A::•()
    ;
  method f(invalid-type x, {invalid-type y = #C1}) → invalid-type
    return throw "";
  method g(invalid-type x, {invalid-type y = #C1}) → invalid-type
    return throw "";
  method h(invalid-type x, {invalid-type y = #C1}) → invalid-type
    return throw "";
}
class I extends core::Object {
  synthetic constructor •() → self::I
    : super core::Object::•()
    ;
  method f(self::I x, {self::I? y = #C1}) → self::I
    return throw "";
  method g(self::I x, {self::I? y = #C1}) → self::A
    return throw "";
  method h(self::A x, {self::I? y = #C1}) → self::A
    return throw "";
}
static method main() → dynamic {}

constants  {
  #C1 = null
}
