blob: c61e199f9fbfa6ff737da0dc875a38cb5100fcb7 [file] [log] [blame]
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>>();