// Errors:
//
// pkg/front_end/testcases/constructor_cycle.dart:7:18: Error: Redirecting constructers can't be cyclic.
// Try to have all constructors eventually redirect to a non-redirecting constructor.
//   A.bar() : this.foo();
//                  ^^^
//
// pkg/front_end/testcases/constructor_cycle.dart:9:9: Error: Redirecting constructers can't be cyclic.
// Try to have all constructors eventually redirect to a non-redirecting constructor.
//   A() : this();
//         ^^^^

library;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  constructor foo() → void
    : this self::A::bar()
    ;
  constructor bar() → void
    : this self::A::foo()
    ;
  constructor baz() → void
    : this self::A::foo()
    ;
  constructor •() → void
    : this self::A::•()
    ;
}
static method main() → dynamic {}
