library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53539.dart:5:23: Error: The type 'int' of the getter 'ET.id' is not a subtype of the type 'String' of the setter 'ET.id'.
// extension type ET(int id) {
//                       ^^
// pkg/front_end/testcases/extension_types/issue53539.dart:6:12: Context: This is the declaration of the setter 'ET.id'.
//   void set id(String i) /* Error */ {}
//            ^^
//
import self as self;
import "dart:core" as core;

extension type ET(core::int id) {
  abstract extension-type-member representation-field get id() → core::int;
  set id = self::ET|set#id;
  constructor • = self::ET|constructor#;
  constructor tearoff • = self::ET|constructor#_#new#tearOff;
}
static extension-type-member method ET|constructor#(core::int id) → self::ET% /* erasure=core::int, declared=! */ {
  lowered final self::ET% /* erasure=core::int, declared=! */ #this = id;
  return #this;
}
static extension-type-member method ET|constructor#_#new#tearOff(core::int id) → self::ET% /* erasure=core::int, declared=! */
  return self::ET|constructor#(id);
static extension-type-member method ET|set#id(lowered final self::ET% /* erasure=core::int, declared=! */ #this, core::String i) → void {}
