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 = self::f1();
  constructor •(self::B1 foo) → self::A1
    : self::A1::foo = foo, super core::Object::•()
    ;
}
class B1 extends self::A1 {
  constructor •(self::B1 foo) → self::B1
    : super self::A1::•(foo)
    ;
}
class A2 extends core::Object {
  field invalid-type foo = #C1;
  constructor •(invalid-type foo) → self::A2
    : self::A2::foo = foo, super core::Object::•()
    ;
}
class B2 extends self::A2 {
  constructor •(invalid-type foo) → self::B2
    : super self::A2::•(foo)
    ;
}
class A3 extends core::Object {
  field invalid-type foo = #C2;
  constructor •() → self::A3
    : super core::Object::•()
    ;
  constructor initializeFoo(invalid-type foo) → self::A3
    : self::A3::foo = foo, super core::Object::•()
    ;
}
class B3 extends self::A3 {
  field (invalid-type) → self::A3 bar = #C3;
  constructor •((invalid-type) → self::A3 bar) → self::B3
    : self::B3::bar = bar, super self::A3::•()
    ;
}
class C3 extends self::B3 {
  constructor •((invalid-type) → self::A3 bar) → self::C3
    : super self::B3::•(bar)
    ;
}
static method f1() → self::B1
  return throw 42;
static method main() → dynamic {}

constants  {
  #C1 = constructor-tearoff self::B2::•
  #C2 = constructor-tearoff self::C3::•
  #C3 = constructor-tearoff self::A3::initializeFoo
}
