| class Class<T> {} |
| |
| class ConcreteClass implements Class<ConcreteClass> {} |
| |
| class G<X extends Class<X>> {} |
| |
| main() {} |
| typedef F<X extends Class<X>> = X; |
| typedef S1 = G; |
| typedef S2 = G<dynamic>; |
| typedef S3 = G<Class>; |
| typedef S4 = G<Class<dynamic>>; |
| typedef S5 = G<ConcreteClass>; |
| typedef S6 = G<Class<ConcreteClass>>; |
| typedef S7 = G<Object>; |
| typedef S8 = G<int>; |
| typedef T1 = F; |
| typedef T2 = F<dynamic>; |
| typedef T3 = F<Class>; |
| typedef T4 = F<Class<dynamic>>; |
| typedef T5 = F<ConcreteClass>; |
| typedef T6 = F<Class<ConcreteClass>>; |
| typedef T7 = F<Object>; |
| typedef T8 = F<int>; |
| typedef Typedef1 = void Function< |
| T1 extends F, |
| T2 extends F<dynamic>, |
| T3 extends F<Class>, |
| T4 extends F<Class<dynamic>>, |
| T5 extends F<ConcreteClass>, |
| T6 extends F<Class<ConcreteClass>>, |
| T7 extends F<Object>, |
| T8 extends F<int>, |
| S1 extends G, |
| S2 extends G<dynamic>, |
| S3 extends G<Class>, |
| S4 extends G<Class<dynamic>>, |
| S5 extends G<ConcreteClass>, |
| S6 extends G<Class<ConcreteClass>>, |
| S7 extends G<Object>, |
| S8 extends G<int>>(); |