| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| typedef F<invariant X extends core::Object = dynamic> = <Y extends X = dynamic>() → void; |
| typedef Fcov<X extends core::Object = dynamic> = () → X; |
| typedef Fcon<contravariant X extends core::Object = dynamic> = (X) → dynamic; |
| typedef Finv<invariant X extends core::Object = dynamic> = (X) → X; |
| typedef FcovBound<X extends core::num = dynamic> = () → X; |
| typedef FconBound<contravariant X extends core::num = dynamic> = (X) → dynamic; |
| typedef FinvBound<invariant X extends core::num = dynamic> = (X) → X; |
| typedef FcovCyclicBound<X extends self::A<X> = dynamic> = () → X; |
| typedef FconCyclicBound<contravariant X extends self::A<X> = dynamic> = (X) → dynamic; |
| typedef FinvCyclicBound<invariant X extends self::A<X> = dynamic> = (X) → X; |
| typedef FcovCyclicCoBound<X extends (X) → dynamic = dynamic> = () → X; |
| typedef FconCyclicCoBound<contravariant X extends (X) → dynamic = dynamic> = (X) → dynamic; |
| typedef FinvCyclicCoBound<invariant X extends (X) → dynamic = dynamic> = (X) → X; |
| class A<X extends core::Object = dynamic> extends core::Object { |
| synthetic constructor •() → self::A<self::A::X> |
| : super core::Object::•() |
| ; |
| } |
| class B<X extends core::Object = dynamic> extends core::Object { |
| synthetic constructor •() → self::B<self::B::X> |
| : super core::Object::•() |
| ; |
| } |
| static method toF<X extends core::Object = dynamic>(self::toF::X x) → <Y extends self::toF::X = dynamic>() → void |
| return null; |
| static method testTopLevel() → void { |
| () → dynamic source1; |
| dynamic fsource1 = self::toF<dynamic>(source1); |
| <Y extends () → dynamic = dynamic>() → void target1 = fsource1; |
| (dynamic) → dynamic source2; |
| dynamic fsource2 = self::toF<dynamic>(source2); |
| <Y extends (dynamic) → dynamic = dynamic>() → void target2 = fsource2; |
| (dynamic) → dynamic source3; |
| dynamic fsource3 = self::toF<dynamic>(source3); |
| <Y extends (dynamic) → dynamic = dynamic>() → void target3 = fsource3; |
| () → dynamic source4; |
| dynamic fsource4 = self::toF<dynamic>(source4); |
| <Y extends () → core::num = dynamic>() → void target4 = fsource4; |
| (dynamic) → dynamic source5; |
| dynamic fsource5 = self::toF<dynamic>(source5); |
| <Y extends (core::num) → dynamic = dynamic>() → void target5 = fsource5; |
| (dynamic) → dynamic source6; |
| dynamic fsource6 = self::toF<dynamic>(source6); |
| <Y extends (core::num) → core::num = dynamic>() → void target6 = fsource6; |
| () → dynamic source7; |
| dynamic fsource7 = self::toF<dynamic>(source7); |
| <Y extends () → self::A<dynamic> = dynamic>() → void target7 = fsource7; |
| (dynamic) → dynamic source8; |
| dynamic fsource8 = self::toF<dynamic>(source8); |
| <Y extends (self::A<core::Null>) → dynamic = dynamic>() → void target8 = fsource8; |
| (dynamic) → dynamic source9; |
| () → dynamic source10; |
| dynamic fsource10 = self::toF<dynamic>(source10); |
| <Y extends () → (core::Null) → dynamic = dynamic>() → void target10 = fsource10; |
| (dynamic) → dynamic source11; |
| dynamic fsource11 = self::toF<dynamic>(source11); |
| <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void target11 = fsource11; |
| (dynamic) → dynamic source12; |
| dynamic fsource12 = self::toF<dynamic>(source12); |
| <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void target12 = fsource12; |
| } |
| static method testNested() → void { |
| self::B<() → dynamic> source1; |
| dynamic fsource1 = self::toF<dynamic>(source1); |
| <Y extends self::B<() → dynamic> = dynamic>() → void target1 = fsource1; |
| self::B<(dynamic) → dynamic> source2; |
| dynamic fsource2 = self::toF<dynamic>(source2); |
| <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target2 = fsource2; |
| self::B<(dynamic) → dynamic> source3; |
| dynamic fsource3 = self::toF<dynamic>(source3); |
| <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target3 = fsource3; |
| self::B<() → dynamic> source4; |
| dynamic fsource4 = self::toF<dynamic>(source4); |
| <Y extends self::B<() → core::num> = dynamic>() → void target4 = fsource4; |
| self::B<(dynamic) → dynamic> source5; |
| dynamic fsource5 = self::toF<dynamic>(source5); |
| <Y extends self::B<(core::num) → dynamic> = dynamic>() → void target5 = fsource5; |
| self::B<(dynamic) → dynamic> source6; |
| dynamic fsource6 = self::toF<dynamic>(source6); |
| <Y extends self::B<(core::num) → core::num> = dynamic>() → void target6 = fsource6; |
| self::B<() → dynamic> source7; |
| dynamic fsource7 = self::toF<dynamic>(source7); |
| <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void target7 = fsource7; |
| self::B<(dynamic) → dynamic> source8; |
| dynamic fsource8 = self::toF<dynamic>(source8); |
| <Y extends self::B<(self::A<core::Null>) → dynamic> = dynamic>() → void target8 = fsource8; |
| self::B<(dynamic) → dynamic> source9; |
| self::B<() → dynamic> source10; |
| dynamic fsource10 = self::toF<dynamic>(source10); |
| <Y extends self::B<() → (core::Null) → dynamic> = dynamic>() → void target10 = fsource10; |
| self::B<(dynamic) → dynamic> source11; |
| dynamic fsource11 = self::toF<dynamic>(source11); |
| <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void target11 = fsource11; |
| self::B<(dynamic) → dynamic> source12; |
| dynamic fsource12 = self::toF<dynamic>(source12); |
| <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void target12 = fsource12; |
| } |
| static method main() → dynamic { |
| self::testTopLevel(); |
| self::testNested(); |
| } |