// Formatted problems:
//
// pkg/front_end/testcases/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
//   T.String method() => "Hello, World!";
//   ^^^^^^^^
//
// pkg/front_end/testcases/type_variable_prefix.dart:8:24: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'invalid-type'.
// Try changing the type of the left hand side, or casting the right hand side to 'invalid-type'.
//   T.String method() => "Hello, World!";
//                        ^
//
// pkg/front_end/testcases/type_variable_prefix.dart:12:24: Error: A value of type 'invalid-type' 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'.
//   T.String s = new C().method();
//                        ^

// Unhandled errors:
//
// pkg/front_end/testcases/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
//   T.String method() => "Hello, World!";
//   ^^^^^^^^

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

class C<T extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T>
    : super core::Object::•()
    ;
  method method() → invalid-type
    return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:8:24: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'invalid-type'.
Try changing the type of the left hand side, or casting the right hand side to 'invalid-type'.
  T.String method() => \"Hello, World!\";
                       ^" in "Hello, World!" as{TypeError} invalid-type;
}
static method main() → dynamic {
  core::String s = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:12:24: Error: A value of type 'invalid-type' 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'.
  T.String s = new C().method();
                       ^" in new self::C::•<dynamic>().{self::C::method}() as{TypeError} core::String;
  core::print(s);
}
