library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/super_parameters/circular_dependency_inference.dart:17:7: Error: Can't infer the type of 'foo': circularity found during type inference.
// Specify the type explicitly.
//   var foo = B2.new; // Error.
//       ^^^
//
// pkg/front_end/testcases/super_parameters/circular_dependency_inference.dart:26:7: Error: Can't infer the type of 'foo': circularity found during type inference.
// Specify the type explicitly.
//   var foo = C3.new; // Error.
//       ^^^
//
import self as self;
import "dart:core" as core;

class A1 extends core::Object {
  field self::B1 foo;
  constructor •(self::B1 foo) → self::A1
    ;
}
class B1 extends self::A1 {
  constructor •(self::B1 foo) → self::B1
    ;
}
class A2 extends core::Object {
  field invalid-type foo;
  constructor •(invalid-type foo) → self::A2
    ;
}
class B2 extends self::A2 {
  constructor •(invalid-type foo) → self::B2
    ;
}
class A3 extends core::Object {
  field invalid-type foo;
  constructor •() → self::A3
    ;
  constructor initializeFoo(invalid-type foo) → self::A3
    ;
}
class B3 extends self::A3 {
  field (invalid-type) → self::A3 bar;
  constructor •((invalid-type) → self::A3 bar) → self::B3
    ;
}
class C3 extends self::B3 {
  constructor •((invalid-type) → self::A3 bar) → self::C3
    ;
}
static method f1() → self::B1
  ;
static method main() → dynamic
  ;
