// Formatted problems:
//
// pkg/front_end/testcases/type_variable_as_super.dart:5:16: Error: The type variable 'T' can't be used as supertype.
// abstract class A<T> extends T {}
//                ^
//
// pkg/front_end/testcases/type_variable_as_super.dart:7:16: Error: The type variable 'T' can't be used as supertype.
// abstract class B<T> extends T {
//                ^
//
// pkg/front_end/testcases/type_variable_as_super.dart:11:7: Error: The type variable 'T' can't be used as supertype.
// class C<T> extends T {}
//       ^

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

abstract class A<T extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → void
    ;
}
abstract class B<T extends core::Object = dynamic> extends core::Object {
  constructor •() → void
    ;
}
class C<T extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → void
    ;
}
static method main() → dynamic
  ;
