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, 'int', of the overridden method, 'A.x'.
// 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();
}
