library test;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  field dynamic x = () → dynamic => new self::B::•().{self::B::x};
  field () → dynamic y = () → dynamic => new self::B::•().{self::B::x};
  default constructor •() → void
    : super core::Object::•()
    ;
}
class B extends self::A {
  field dynamic x = null;
  field () → dynamic y = null;
  default constructor •() → void
    : super self::A::•()
    ;
}
static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/inference_new/field_inference_circularity.dart:12:69: Error: Can't infer the type of 'x': circularity found during type inference.\nSpecify the type explicitly.\n  var /*@topType=dynamic*/ /*@error=CantInferTypeDueToCircularity*/ x = /*@returnType=dynamic*/ () =>\n                                                                    ^", "pkg/front_end/testcases/inference_new/field_inference_circularity.dart:19:69: Error: Can't infer the type of 'x': circularity found during type inference.\nSpecify the type explicitly.\n  var /*@topType=dynamic*/ /*@error=CantInferTypeDueToCircularity*/ x;\n                                                                    ^"]/* from null */;
static method main() → dynamic {}
