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);
  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);
static method main() → dynamic {}
