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