| 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) {} |