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

class C extends core::Object {
  field dynamic x = null;
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method f() → void {}
}
static method test(self::C c) → void {
  c.{self::C::x};
  let final dynamic #t1 = c in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class '#lib1::C'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
  c. /*@error=UndefinedGetter*/ y;
                                ^";
  c.{self::C::f}();
  let final dynamic #t2 = c in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class '#lib1::C'.
Try correcting the name to the name of an existing method, or defining a method named 'g'.
  c. /*@error=UndefinedMethod*/ g();
                                ^";
  c.{self::C::x} = null;
  let final dynamic #t3 = c in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class '#lib1::C'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'y'.
  c. /*@error=UndefinedSetter*/ y = null;
                                ^";
}
static method main() → dynamic {}
