// 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 'dart.core::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 'dart.core::Null'.
Try correcting the name to the name of an existing method, or defining a method named 'bar'.
  null.bar();
       ^^^";
}
static method main() → dynamic {}
