library test;
import self as self;
import "./infer_type_regardless_of_declaration_order_or_cycles_b.dart" as inf;
import "dart:core" as core;

class C extends inf::B {
  synthetic constructor •() → void
    : super inf::B::•()
    ;
  get x() → core::int
    return null;
}
class A extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  get x() → core::int
    return 0;
}
static method foo() → dynamic {
  core::int y = new self::C::•().{self::C::x};
  core::String z = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
  String z = /*error:INVALID_ASSIGNMENT*/ new C(). /*@target=C::x*/ x;
                                                                    ^" in let final core::int #t2 = new self::C::•().{self::C::x} in null;
}
static method main() → dynamic {
  self::foo();
}
