library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart:15:3: Error: Can't infer the type of 'C._circular': circularity found during type inference.
// Specify the type explicitly.
//   C._circular(this.f);
//   ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart:11:25: Error: The value 'null' can't be assigned to the parameter type 'C' because 'C' is not nullable.
//  - 'C' is from 'pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart'.
// var x = new C._circular(null);
//                         ^
//
// pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart:14:27: Error: The value 'null' can't be assigned to the parameter type 'C' because 'C' is not nullable.
//  - 'C' is from 'pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart'.
//   var f = new C._circular(null);
//                           ^
//
import self as self;
import "dart:core" as core;

class C extends core::Object {
  field self::C f = new self::C::_circular(invalid-expression "pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart:14:27: Error: The value 'null' can't be assigned to the parameter type 'C' because 'C' is not nullable.
 - 'C' is from 'pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart'.
  var f = new C._circular(null);
                          ^" in null as{TypeError,ForNonNullableByDefault} self::C);
  constructor _circular(self::C f) → self::C
    : self::C::f = f, super core::Object::•()
    ;
}
static field self::C x = new self::C::_circular(invalid-expression "pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart:11:25: Error: The value 'null' can't be assigned to the parameter type 'C' because 'C' is not nullable.
 - 'C' is from 'pkg/front_end/testcases/general/circularity-via-initializing-formal2.dart'.
var x = new C._circular(null);
                        ^" in null as{TypeError,ForNonNullableByDefault} self::C);
static method main() → dynamic {}
