// Formatted problems:
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:17: Error: Expected ';' after this.
// type T = Map<A, B>
//                 ^
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:18: Error: Expected a declaration, but got '>'.
// type T = Map<A, B>
//                  ^
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: Type 'type' not found.
// type T = Map<A, B>
// ^^^^
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:14: Error: Getter not found: 'A'.
// type T = Map<A, B>
//              ^
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'dart.core::Type'.
// Try correcting the name to the name of an existing method, or defining a method named '<'.
// type T = Map<A, B>
//             ^
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: 'type' isn't a type.
// type T = Map<A, B>
// ^^^^

// Unhandled errors:
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:17: Error: Expected ';' after this.
// type T = Map<A, B>
//                 ^
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:18: Error: Expected a declaration, but got '>'.
// type T = Map<A, B>
//                  ^
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: Type 'type' not found.
// type T = Map<A, B>
// ^^^^
//
// pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: 'type' isn't a type.
// type T = Map<A, B>
// ^^^^

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

static field invalid-type T = let final dynamic #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'dart.core::Type'.
Try correcting the name to the name of an existing method, or defining a method named '<'.
type T = Map<A, B>
            ^";
static field invalid-type B;
static method main() → dynamic {}
