// Formatted problems:
//
// pkg/front_end/testcases/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
//     this.bar();
//     ^^^^
//
// pkg/front_end/testcases/invalid_type.dart:12:12: Error: 'Missing' isn't a type.
//   (null as Missing).bar();
//            ^^^^^^^
//
// pkg/front_end/testcases/invalid_type.dart:13:8: Error: The method 'bar' isn't defined for the class 'Null'.
// Try correcting the name to the name of an existing method, or defining a method named 'bar'.
//   null.bar();
//        ^^^

// Unhandled errors:
//
// pkg/front_end/testcases/invalid_type.dart:12:12: Error: 'Missing' isn't a type.
//   (null as Missing).bar();
//            ^^^^^^^

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

class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  static method foo() → dynamic {
    invalid-expression "pkg/front_end/testcases/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
    this.bar();
    ^^^^".bar();
  }
}
static method test() → dynamic {
  (null as invalid-type).bar();
  let final dynamic #t1 = null in invalid-expression "pkg/front_end/testcases/invalid_type.dart:13:8: Error: The method 'bar' isn't defined for the class 'Null'.
Try correcting the name to the name of an existing method, or defining a method named 'bar'.
  null.bar();
       ^^^";
}
static method main() → dynamic {}
