blob: cc6feb2d7a08492253737daa2b634cc32c410c7f [file] [log] [blame]
typedef F<X> = void Function<Y extends X>();
F<X> toF<X>(X x) => throw '';
typedef Fcov<X> = X Function();
typedef Fcon<X> = Function(X);
typedef Finv<X> = X Function(X);
typedef FcovBound<X extends num> = X Function();
typedef FconBound<X extends num> = Function(X);
typedef FinvBound<X extends num> = X Function(X);
class A<X> {}
typedef FcovCyclicBound<X extends A<X>> = X Function();
typedef FconCyclicBound<X extends A<X>> = Function(X);
typedef FinvCyclicBound<X extends A<X>> = X Function(X);
typedef FcovCyclicCoBound<X extends Function(X)> = X Function();
typedef FconCyclicCoBound<X extends Function(X)> = Function(X);
typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
class B<X> {}
void testTopLevel(
Fcov source1,
Fcon source2,
Finv source3,
FcovBound source4,
FconBound source5,
FinvBound source6,
FcovCyclicBound source7,
FconCyclicBound source8,
FcovCyclicCoBound source10,
FconCyclicCoBound source11,
FinvCyclicCoBound source12) {}
void testNested(
B<Fcov> source1,
B<Fcon> source2,
B<Finv> source3,
B<FcovBound> source4,
B<FconBound> source5,
B<FinvBound> source6,
B<FcovCyclicBound> source7,
B<FconCyclicBound> source8,
B<FcovCyclicCoBound> source10,
B<FconCyclicCoBound> source11,
B<FinvCyclicCoBound> source12) {}
main() {}