library test /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart:19:7: Error: Can't infer a type for 'x' as the overridden members don't have a combined signature.
// Try adding an explicit type.
//   var x;
//       ^
// pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart:13:11: Context: This is one of the overridden members.
//   int get x;
//           ^
// pkg/front_end/testcases/inference_new/infer_field_override_getter_overrides_setter.dart:9:12: Context: This is one of the overridden members.
//   void set x(num value);
//            ^
//
import self as self;
import "dart:core" as core;

abstract class A extends core::Object {
  synthetic constructor •() → self::A
    ;
  abstract set x(core::num value) → void;
}
abstract class B extends self::A {
  synthetic constructor •() → self::B
    ;
  abstract get x() → core::int;
}
class C extends self::B {
  field invalid-type x;
  synthetic constructor •() → self::C
    ;
}
static method main() → dynamic
  ;
