blob: d1247c0c5ff03ddb655ac44883fd509dc35208a2 [file] [log] [blame]
typedef A<T> = Class<T>;
typedef B<T extends num> = Class<T>;
class Class<T> {
const Class();
@T()
static T? method0<S extends T>(T arg) {}
@Class<T>()
static Class<T>? method1<S extends Class<T>>(Class<T> arg) {}
@Class<Class<T>>()
static Class<Class<T>>? method2<S extends Class<Class<T>>>(Class<Class<T>> arg) {}
@A<T>()
static A<T>? method3<S extends A<T>>(A<T> arg) {}
@A<A<T>>()
static A<A<T>>? method4<S extends A<A<T>>>(A<A<T>> arg) {}
@B<T>()
static B<T>? method5<S extends B<T>>(B<T> arg) {}
@A<B<T>>()
static A<B<T>>? method6<S extends A<B<T>>>(A<B<T>> arg) {}
@Class<void Function<S extends T>()>()
static void Function<S extends T>()? method7<U extends void Function<S extends T>()>(void Function<S extends T>() arg) {}
@T()
static T field0;
@Class<T>()
static Class<T>? field1;
@Class<Class<T>>()
static Type field2 = T;
@A<T>()
static Type field3 = Class<T>;
@B<T>()
static var field4 = (T t) => T;
@T()
final T? instanceField;
@T()
T instanceMethod<S extends T>(T t) {}
}
extension Extension<T> on T {
Extension(T t);
factory Extension.fact(T t) => null;
@T()
static T field0;
@T()
T field1;
@T()
static T? staticMethod<S extends T>(T arg) {}
@T()
T instanceMethod<S extends T>(T t) {}
}
mixin Mixin<T> {
Mixin(T t);
factory Mixin.fact(T t) => null;
@T()
static T field0;
@T()
static T? staticMethod<S extends T>(T arg) {}
@T()
T? instanceField;
@T()
T instanceMethod<S extends T>(T t) {}
}
main() {}