library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/dart2js/issue47916f.dart:10:17: Error: Cyclic definition of factory 'B'.
//   const factory B() = C;
//                 ^
//
// pkg/front_end/testcases/dart2js/issue47916f.dart:14:17: Error: Cyclic definition of factory 'C'.
//   const factory C() = B;
//                 ^
//
import self as self;
import "dart:core" as core;

abstract class A<T extends core::Object? = dynamic> extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
    return self::B::•<self::A::•::T%>();
  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::A<self::A::_#new#tearOff::T%>;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object implements self::A<self::B::T%> {
  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
  static factory •<T extends core::Object? = dynamic>() → self::B<self::B::•::T%>
    return invalid-expression "pkg/front_end/testcases/dart2js/issue47916f.dart:10:17: Error: Cyclic definition of factory 'B'.
  const factory B() = C;
                ^";
  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::B<self::B::_#new#tearOff::T%>;
}
class C<T extends core::Object? = dynamic> extends core::Object implements self::B<self::C::T%> {
  static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
  static factory •<T extends core::Object? = dynamic>() → self::C<self::C::•::T%>
    return invalid-expression "pkg/front_end/testcases/dart2js/issue47916f.dart:14:17: Error: Cyclic definition of factory 'C'.
  const factory C() = B;
                ^";
  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::C<self::C::_#new#tearOff::T%>;
}
static method test() → dynamic {
  #C4;
  #C5;
  #C6;
}
static method main() → dynamic {}

constants  {
  #C1 = constructor-tearoff self::A::•
  #C2 = constructor-tearoff self::B::•
  #C3 = constructor-tearoff self::C::•
  #C4 = static-tearoff self::A::_#new#tearOff
  #C5 = static-tearoff self::B::_#new#tearOff
  #C6 = static-tearoff self::C::_#new#tearOff
}
