library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart:13:49: Error: The return type of the method 'B.x' is 'dynamic', which does not match the return type of the overridden method, 'int'.
// Change to a subtype of 'int'.
//   /*error:INVALID_METHOD_OVERRIDE*/ dynamic get x => 3;
//                                                 ^
// pkg/front_end/testcases/inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer.dart:9:13: Context: This is the overridden method ('x').
//   final int x = 2;
//             ^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  final field core::int x = 2;
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
}
class B extends core::Object implements self::A {
  synthetic constructor •() → self::B
    : super core::Object::•()
    ;
  get x() → dynamic
    return 3;
}
static method foo() → dynamic {
  core::String y = new self::B::•().{self::B::x} as{TypeError} core::String;
  core::int z = new self::B::•().{self::B::x} as{TypeError} core::int;
}
static method main() → dynamic {
  self::foo();
}
