library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue28565.dart:22:16: Error: An external constructor can't have any initializers.
//   external E() : super();
//                ^
//
// pkg/front_end/testcases/general/issue28565.dart:23:25: Error: An external constructor can't have any initializers.
//   external E.redirect() : this();
//                         ^
//
// pkg/front_end/testcases/general/issue28565.dart:27:16: Error: An external or native method can't have a body.
//   external F() {
//                ^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  external constructor •() → self::A;
}
class B extends core::Object /*hasConstConstructor*/  {
  external const constructor •() → self::B;
}
class C extends core::Object {
  external constructor named() → self::C;
}
class D extends core::Object /*hasConstConstructor*/  {
  external const constructor named() → self::D;
}
class E extends core::Object {
  external constructor •() → self::E;
  external constructor redirect() → self::E;
}
class F extends core::Object {
  external constructor •() → self::F {
    invalid-expression "pkg/front_end/testcases/general/issue28565.dart:27:16: Error: An external or native method can't have a body.
  external F() {
               ^";
    {
      core::print("I have a body");
    }
  }
}
