| 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 Acov<X extends () → self::Acov::Y = dynamic, Y extends core::Object = dynamic> extends core::Object { |
| synthetic constructor •() → self::Acov<self::Acov::X, self::Acov::Y> |
| : super core::Object::•() |
| ; |
| } |
| class Acon<X extends (self::Acon::Y) → dynamic = dynamic, Y extends core::Object = dynamic> extends core::Object { |
| synthetic constructor •() → self::Acon<self::Acon::X, self::Acon::Y> |
| : super core::Object::•() |
| ; |
| } |
| class Ainv<X extends (self::Ainv::Y) → self::Ainv::Y = dynamic, Y extends core::Object = dynamic> extends core::Object { |
| synthetic constructor •() → self::Ainv<self::Ainv::X, self::Ainv::Y> |
| : super core::Object::•() |
| ; |
| } |
| class AcovBound<X extends () → self::AcovBound::Y = dynamic, Y extends core::num = dynamic> extends core::Object { |
| synthetic constructor •() → self::AcovBound<self::AcovBound::X, self::AcovBound::Y> |
| : super core::Object::•() |
| ; |
| } |
| class AconBound<X extends (self::AconBound::Y) → dynamic = dynamic, Y extends core::num = dynamic> extends core::Object { |
| synthetic constructor •() → self::AconBound<self::AconBound::X, self::AconBound::Y> |
| : super core::Object::•() |
| ; |
| } |
| class AinvBound<X extends (self::AinvBound::Y) → self::AinvBound::Y = dynamic, Y extends core::num = dynamic> extends core::Object { |
| synthetic constructor •() → self::AinvBound<self::AinvBound::X, self::AinvBound::Y> |
| : super core::Object::•() |
| ; |
| } |
| class A<X extends core::Object = dynamic> extends core::Object { |
| synthetic constructor •() → self::A<self::A::X> |
| : super core::Object::•() |
| ; |
| } |
| class AcovCyclicBound<X extends () → self::AcovCyclicBound::Y = dynamic, Y extends self::A<self::AcovCyclicBound::Y> = dynamic> extends core::Object { |
| synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X, self::AcovCyclicBound::Y> |
| : super core::Object::•() |
| ; |
| } |
| class AconCyclicBound<X extends (self::AconCyclicBound::Y) → dynamic = dynamic, Y extends self::A<self::AconCyclicBound::Y> = dynamic> extends core::Object { |
| synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X, self::AconCyclicBound::Y> |
| : super core::Object::•() |
| ; |
| } |
| class AinvCyclicBound<X extends (self::AinvCyclicBound::Y) → self::AinvCyclicBound::Y = dynamic, Y extends self::A<self::AinvCyclicBound::Y> = dynamic> extends core::Object { |
| synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X, self::AinvCyclicBound::Y> |
| : super core::Object::•() |
| ; |
| } |
| class AcovCyclicCoBound<X extends () → self::AcovCyclicCoBound::Y = dynamic, Y extends (self::AcovCyclicCoBound::Y) → dynamic = dynamic> extends core::Object { |
| synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X, self::AcovCyclicCoBound::Y> |
| : super core::Object::•() |
| ; |
| } |
| class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y) → dynamic = dynamic, Y extends (self::AconCyclicCoBound::Y) → dynamic = dynamic> extends core::Object { |
| synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X, self::AconCyclicCoBound::Y> |
| : super core::Object::•() |
| ; |
| } |
| class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y) → self::AinvCyclicCoBound::Y = dynamic, Y extends (self::AinvCyclicCoBound::Y) → dynamic = dynamic> extends core::Object { |
| synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X, self::AinvCyclicCoBound::Y> |
| : 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 testTypeAliasAsTypeArgument() → void { |
| self::Acov<dynamic, dynamic> source1; |
| dynamic fsource1 = self::toF<dynamic>(source1); |
| <Y extends self::Acov<() → dynamic, dynamic> = dynamic>() → void target1 = fsource1; |
| self::Acon<dynamic, dynamic> source2; |
| dynamic fsource2 = self::toF<dynamic>(source2); |
| <Y extends self::Acon<(core::Null) → dynamic, dynamic> = dynamic>() → void target2 = fsource2; |
| self::Ainv<dynamic, dynamic> source3; |
| dynamic fsource3 = self::toF<dynamic>(source3); |
| <Y extends self::Ainv<(dynamic) → dynamic, dynamic> = dynamic>() → void target3 = fsource3; |
| self::AcovBound<dynamic, dynamic> source4; |
| dynamic fsource4 = self::toF<dynamic>(source4); |
| <Y extends self::AcovBound<() → core::num, core::num> = dynamic>() → void target4 = fsource4; |
| self::AconBound<dynamic, dynamic> source5; |
| dynamic fsource5 = self::toF<dynamic>(source5); |
| <Y extends self::AconBound<(core::Null) → dynamic, core::num> = dynamic>() → void target5 = fsource5; |
| self::AinvBound<dynamic, dynamic> source6; |
| dynamic fsource6 = self::toF<dynamic>(source6); |
| <Y extends self::AinvBound<(core::num) → core::num, core::num> = dynamic>() → void target6 = fsource6; |
| self::AcovCyclicBound<dynamic, dynamic> source7; |
| dynamic fsource7 = self::toF<dynamic>(source7); |
| <Y extends self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> = dynamic>() → void target7 = fsource7; |
| self::AconCyclicBound<dynamic, dynamic> source8; |
| dynamic fsource8 = self::toF<dynamic>(source8); |
| <Y extends self::AconCyclicBound<(core::Null) → dynamic, self::A<dynamic>> = dynamic>() → void target8 = fsource8; |
| self::AinvCyclicBound<dynamic, dynamic> source9; |
| self::AcovCyclicCoBound<dynamic, dynamic> source10; |
| dynamic fsource10 = self::toF<dynamic>(source10); |
| <Y extends self::AcovCyclicCoBound<() → (core::Null) → dynamic, (core::Null) → dynamic> = dynamic>() → void target10 = fsource10; |
| self::AconCyclicCoBound<dynamic, dynamic> source11; |
| dynamic fsource11 = self::toF<dynamic>(source11); |
| <Y extends self::AconCyclicCoBound<(core::Null) → dynamic, (core::Null) → dynamic> = dynamic>() → void target11 = fsource11; |
| self::AinvCyclicCoBound<dynamic, dynamic> source12; |
| } |
| static method testNested() → void { |
| self::B<self::Acov<dynamic, dynamic>> source1; |
| dynamic fsource1 = self::toF<dynamic>(source1); |
| <Y extends self::B<self::Acov<() → dynamic, dynamic>> = dynamic>() → void target1 = fsource1; |
| self::B<self::Acon<dynamic, dynamic>> source2; |
| dynamic fsource2 = self::toF<dynamic>(source2); |
| <Y extends self::B<self::Acon<(core::Null) → dynamic, dynamic>> = dynamic>() → void target2 = fsource2; |
| self::B<self::Ainv<dynamic, dynamic>> source3; |
| dynamic fsource3 = self::toF<dynamic>(source3); |
| <Y extends self::B<self::Ainv<(dynamic) → dynamic, dynamic>> = dynamic>() → void target3 = fsource3; |
| self::B<self::AcovBound<dynamic, dynamic>> source4; |
| dynamic fsource4 = self::toF<dynamic>(source4); |
| <Y extends self::B<self::AcovBound<() → core::num, core::num>> = dynamic>() → void target4 = fsource4; |
| self::B<self::AconBound<dynamic, dynamic>> source5; |
| dynamic fsource5 = self::toF<dynamic>(source5); |
| <Y extends self::B<self::AconBound<(core::Null) → dynamic, core::num>> = dynamic>() → void target5 = fsource5; |
| self::B<self::AinvBound<dynamic, dynamic>> source6; |
| dynamic fsource6 = self::toF<dynamic>(source6); |
| <Y extends self::B<self::AinvBound<(core::num) → core::num, core::num>> = dynamic>() → void target6 = fsource6; |
| self::B<self::AcovCyclicBound<dynamic, dynamic>> source7; |
| dynamic fsource7 = self::toF<dynamic>(source7); |
| <Y extends self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> = dynamic>() → void target7 = fsource7; |
| self::B<self::AconCyclicBound<dynamic, dynamic>> source8; |
| dynamic fsource8 = self::toF<dynamic>(source8); |
| <Y extends self::B<self::AconCyclicBound<(core::Null) → dynamic, self::A<dynamic>>> = dynamic>() → void target8 = fsource8; |
| self::B<self::AinvCyclicBound<dynamic, dynamic>> source9; |
| self::B<self::AcovCyclicCoBound<dynamic, dynamic>> source10; |
| dynamic fsource10 = self::toF<dynamic>(source10); |
| <Y extends self::B<self::AcovCyclicCoBound<() → (core::Null) → dynamic, (core::Null) → dynamic>> = dynamic>() → void target10 = fsource10; |
| self::B<self::AconCyclicCoBound<dynamic, dynamic>> source11; |
| dynamic fsource11 = self::toF<dynamic>(source11); |
| <Y extends self::B<self::AconCyclicCoBound<(core::Null) → dynamic, (core::Null) → dynamic>> = dynamic>() → void target11 = fsource11; |
| self::B<self::AinvCyclicCoBound<dynamic, dynamic>> source12; |
| } |
| static method main() → dynamic { |
| self::testTypeAliasAsTypeArgument(); |
| self::testNested(); |
| } |