library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue50382.dart:6:3: Error: The superclass, 'B', has no unnamed constructor that takes no arguments.
//   A({required super.field});
//   ^
//
// pkg/front_end/testcases/general/issue50382.dart:16:3: Error: The superclass, 'D', has no unnamed constructor that takes no arguments.
//   C({required int super.field});
//   ^
//
import self as self;
import "dart:core" as core;

class A extends self::B {
  constructor •({required super-initializing-formal invalid-type field}) → self::A
    : invalid-initializer "pkg/front_end/testcases/general/issue50382.dart:6:3: Error: The superclass, 'B', has no unnamed constructor that takes no arguments.
  A({required super.field});
  ^"
    ;
}
class B extends core::Object {
  final field core::int field;
  constructor named({required initializing-formal core::int field}) → self::B
    : self::B::field = field, super core::Object::•()
    ;
}
class C extends self::D {
  constructor •({required super-initializing-formal core::int field}) → self::C
    : invalid-initializer "pkg/front_end/testcases/general/issue50382.dart:16:3: Error: The superclass, 'D', has no unnamed constructor that takes no arguments.
  C({required int super.field});
  ^"
    ;
}
class D extends core::Object {
  final field core::int field;
  constructor named({required initializing-formal core::int field}) → self::D
    : self::D::field = field, super core::Object::•()
    ;
}
