blob: 966938f74740187be6726f4b6b292bd667bbfd6d [file] [log] [blame]
mixin Class<T> {}
class ConcreteClass implements Class<ConcreteClass> {}
typedef F<X extends Class<X>> = X;
class G<X extends Class<X>> {}
class H<X extends (Class<X>, int)> {}
typedef Typedef1<
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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>>
= void Function();
typedef Typedef2 = 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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>>();
typedef void Typedef3<
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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>>();
class Class1<
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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>> {}
class Class2<
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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>> = Object with Class;
mixin Mixin1<
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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>> {}
enum Enum1<
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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>> {
a<
ConcreteClass,
ConcreteClass,
ConcreteClass,
ConcreteClass,
ConcreteClass,
ConcreteClass,
ConcreteClass,
ConcreteClass,
G<ConcreteClass>,
G<ConcreteClass>,
G<ConcreteClass>,
G<ConcreteClass>,
G<ConcreteClass>,
G<ConcreteClass>,
G<ConcreteClass>,
G<ConcreteClass>,
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
({ConcreteClass a, int b}),
({ConcreteClass a, int b}),
({ConcreteClass a, int b}),
({ConcreteClass a, int b}),
({ConcreteClass a, int b}),
({ConcreteClass a, int b}),
({ConcreteClass a, int b}),
({ConcreteClass a, int b}),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int),
(ConcreteClass, int)>()
}
extension Extension<
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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>> on Class {}
void method1<
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>,
U1 extends (F, int),
U2 extends (F<dynamic>, int),
U3 extends (F<Class>, int),
U4 extends (F<Class<dynamic>>, int),
U5 extends (F<ConcreteClass>, int),
U6 extends (F<Class<ConcreteClass>>, int),
U7 extends (F<Object>, int),
U8 extends (F<int>, int),
V1 extends ({G a, int b}),
V2 extends ({G<dynamic> a, int b}),
V3 extends ({G<Class> a, int b}),
V4 extends ({G<Class<dynamic>> a, int b}),
V5 extends ({G<ConcreteClass> a, int b}),
V6 extends ({G<Class<ConcreteClass>> a, int b}),
V7 extends ({G<Object> a, int b}),
V8 extends ({G<int> a, int b}),
W1 extends H,
W2 extends H<dynamic>,
W3 extends H<(Class, int)>,
W4 extends H<(Class<dynamic>, int)>,
W5 extends H<(ConcreteClass, int)>,
W6 extends H<(Class<ConcreteClass>, int)>,
W7 extends H<(Object, int)>,
W8 extends H<(int, int)>>() {}
test() {}
main() {}