// Formatted problems:
//
// pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart:16:24: Error: The return type of the method 'B::x' is dart.core::int, which does not match the return type of the overridden method (dart.core::double).
// Change to a subtype of dart.core::double.
//   var /*@topType=int*/ x;
//                        ^
// pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart:10:12: Context: This is the overridden method ('x').
//   void set x(double value);
//            ^

// Unhandled errors:
//
// pkg/front_end/testcases/inference_new/infer_field_getter_setter_mismatch.dart:16:24: Error: The return type of the method 'B::x' is dart.core::int, which does not match the return type of the overridden method (dart.core::double).
// Change to a subtype of dart.core::double.
//   var /*@topType=int*/ x;
//                        ^

library test;
import self as self;
import "dart:core" as core;

abstract class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
  abstract get x() → core::int;
  abstract set x(core::double value) → void;
}
class B extends self::A {
  field core::int x = null;
  synthetic constructor •() → self::B
    : super self::A::•()
    ;
}
static method main() → dynamic {}
