| 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() {} |