// Errors:
//
// pkg/front_end/testcases/type_variable_prefix.dart:8:3: Error: Type 'T.String' not found.
//   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 •() → void
    : super core::Object::•()
    ;
  method method() → invalid-type
    return let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in 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 let final dynamic #t2 = "Hello, World!" in null;
}
static method main() → dynamic {
  core::String s = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in 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 let final dynamic #t4 = new self::C::•<dynamic>().{self::C::method}() in null;
  core::print(s);
}
