| 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* = core::num*> = () →* X*; |
| typedef FconBound<contravariant X extends core::num* = core::num*> = (X*) →* dynamic; |
| typedef FinvBound<invariant X extends core::num* = core::num*> = (X*) →* X*; |
| typedef FcovCyclicBound<X extends self::A<X*>* = self::A<dynamic>*> = () →* X*; |
| typedef FconCyclicBound<contravariant X extends self::A<X*>* = self::A<core::Null?>*> = (X*) →* dynamic; |
| typedef FinvCyclicBound<invariant X extends self::A<X*>* = self::A<dynamic>*> = (X*) →* X*; |
| typedef FcovCyclicCoBound<X extends (X*) →* dynamic = (core::Null?) →* dynamic> = () →* X*; |
| typedef FconCyclicCoBound<contravariant X extends (X*) →* dynamic = (dynamic) →* dynamic> = (X*) →* dynamic; |
| typedef FinvCyclicCoBound<invariant X extends (X*) →* dynamic = (dynamic) →* dynamic> = (X*) →* X*; |
| class A<X extends core::Object* = dynamic> extends core::Object { |
| synthetic constructor •() → self::A<self::A::X*>* |
| : super core::Object::•() |
| ; |
| abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode |
| abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf |
| abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf |
| abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue |
| abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse |
| abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::== |
| abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode |
| abstract member-signature method toString() → core::String*; -> core::Object::toString |
| abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod |
| abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType |
| } |
| class B<X extends core::Object* = dynamic> extends core::Object { |
| synthetic constructor •() → self::B<self::B::X*>* |
| : super core::Object::•() |
| ; |
| abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode |
| abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf |
| abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf |
| abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue |
| abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse |
| abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::== |
| abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode |
| abstract member-signature method toString() → core::String*; -> core::Object::toString |
| abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod |
| abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType |
| } |
| 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; |
| <Y extends () →* dynamic = dynamic>() →* void fsource1 = self::toF<() →* dynamic>(source1); |
| <Y extends () →* dynamic = dynamic>() →* void target1 = fsource1; |
| (dynamic) →* dynamic source2; |
| <Y extends (dynamic) →* dynamic = dynamic>() →* void fsource2 = self::toF<(dynamic) →* dynamic>(source2); |
| <Y extends (dynamic) →* dynamic = dynamic>() →* void target2 = fsource2; |
| (dynamic) →* dynamic source3; |
| <Y extends (dynamic) →* dynamic = dynamic>() →* void fsource3 = self::toF<(dynamic) →* dynamic>(source3); |
| <Y extends (dynamic) →* dynamic = dynamic>() →* void target3 = fsource3; |
| () →* core::num* source4; |
| <Y extends () →* core::num* = dynamic>() →* void fsource4 = self::toF<() →* core::num*>(source4); |
| <Y extends () →* core::num* = dynamic>() →* void target4 = fsource4; |
| (core::num*) →* dynamic source5; |
| <Y extends (core::num*) →* dynamic = dynamic>() →* void fsource5 = self::toF<(core::num*) →* dynamic>(source5); |
| <Y extends (core::num*) →* dynamic = dynamic>() →* void target5 = fsource5; |
| (core::num*) →* core::num* source6; |
| <Y extends (core::num*) →* core::num* = dynamic>() →* void fsource6 = self::toF<(core::num*) →* core::num*>(source6); |
| <Y extends (core::num*) →* core::num* = dynamic>() →* void target6 = fsource6; |
| () →* self::A<dynamic>* source7; |
| <Y extends () →* self::A<dynamic>* = dynamic>() →* void fsource7 = self::toF<() →* self::A<dynamic>*>(source7); |
| <Y extends () →* self::A<dynamic>* = dynamic>() →* void target7 = fsource7; |
| (self::A<core::Null?>*) →* dynamic source8; |
| <Y extends (self::A<core::Null?>*) →* dynamic = dynamic>() →* void fsource8 = self::toF<(self::A<core::Null?>*) →* dynamic>(source8); |
| <Y extends (self::A<core::Null?>*) →* dynamic = dynamic>() →* void target8 = fsource8; |
| (self::A<dynamic>*) →* self::A<dynamic>* source9; |
| () →* (core::Null?) →* dynamic source10; |
| <Y extends () →* (core::Null?) →* dynamic = dynamic>() →* void fsource10 = self::toF<() →* (core::Null?) →* dynamic>(source10); |
| <Y extends () →* (core::Null?) →* dynamic = dynamic>() →* void target10 = fsource10; |
| ((dynamic) →* dynamic) →* dynamic source11; |
| <Y extends ((dynamic) →* dynamic) →* dynamic = dynamic>() →* void fsource11 = self::toF<((dynamic) →* dynamic) →* dynamic>(source11); |
| <Y extends ((dynamic) →* dynamic) →* dynamic = dynamic>() →* void target11 = fsource11; |
| ((dynamic) →* dynamic) →* (dynamic) →* dynamic source12; |
| <Y extends ((dynamic) →* dynamic) →* (dynamic) →* dynamic = dynamic>() →* void fsource12 = self::toF<((dynamic) →* dynamic) →* (dynamic) →* dynamic>(source12); |
| <Y extends ((dynamic) →* dynamic) →* (dynamic) →* dynamic = dynamic>() →* void target12 = fsource12; |
| } |
| static method testNested() → void { |
| self::B<() →* dynamic>* source1; |
| <Y extends self::B<() →* dynamic>* = dynamic>() →* void fsource1 = self::toF<self::B<() →* dynamic>*>(source1); |
| <Y extends self::B<() →* dynamic>* = dynamic>() →* void target1 = fsource1; |
| self::B<(dynamic) →* dynamic>* source2; |
| <Y extends self::B<(dynamic) →* dynamic>* = dynamic>() →* void fsource2 = self::toF<self::B<(dynamic) →* dynamic>*>(source2); |
| <Y extends self::B<(dynamic) →* dynamic>* = dynamic>() →* void target2 = fsource2; |
| self::B<(dynamic) →* dynamic>* source3; |
| <Y extends self::B<(dynamic) →* dynamic>* = dynamic>() →* void fsource3 = self::toF<self::B<(dynamic) →* dynamic>*>(source3); |
| <Y extends self::B<(dynamic) →* dynamic>* = dynamic>() →* void target3 = fsource3; |
| self::B<() →* core::num*>* source4; |
| <Y extends self::B<() →* core::num*>* = dynamic>() →* void fsource4 = self::toF<self::B<() →* core::num*>*>(source4); |
| <Y extends self::B<() →* core::num*>* = dynamic>() →* void target4 = fsource4; |
| self::B<(core::num*) →* dynamic>* source5; |
| <Y extends self::B<(core::num*) →* dynamic>* = dynamic>() →* void fsource5 = self::toF<self::B<(core::num*) →* dynamic>*>(source5); |
| <Y extends self::B<(core::num*) →* dynamic>* = dynamic>() →* void target5 = fsource5; |
| self::B<(core::num*) →* core::num*>* source6; |
| <Y extends self::B<(core::num*) →* core::num*>* = dynamic>() →* void fsource6 = self::toF<self::B<(core::num*) →* core::num*>*>(source6); |
| <Y extends self::B<(core::num*) →* core::num*>* = dynamic>() →* void target6 = fsource6; |
| self::B<() →* self::A<dynamic>*>* source7; |
| <Y extends self::B<() →* self::A<dynamic>*>* = dynamic>() →* void fsource7 = self::toF<self::B<() →* self::A<dynamic>*>*>(source7); |
| <Y extends self::B<() →* self::A<dynamic>*>* = dynamic>() →* void target7 = fsource7; |
| self::B<(self::A<core::Null?>*) →* dynamic>* source8; |
| <Y extends self::B<(self::A<core::Null?>*) →* dynamic>* = dynamic>() →* void fsource8 = self::toF<self::B<(self::A<core::Null?>*) →* dynamic>*>(source8); |
| <Y extends self::B<(self::A<core::Null?>*) →* dynamic>* = dynamic>() →* void target8 = fsource8; |
| self::B<(self::A<dynamic>*) →* self::A<dynamic>*>* source9; |
| self::B<() →* (core::Null?) →* dynamic>* source10; |
| <Y extends self::B<() →* (core::Null?) →* dynamic>* = dynamic>() →* void fsource10 = self::toF<self::B<() →* (core::Null?) →* dynamic>*>(source10); |
| <Y extends self::B<() →* (core::Null?) →* dynamic>* = dynamic>() →* void target10 = fsource10; |
| self::B<((dynamic) →* dynamic) →* dynamic>* source11; |
| <Y extends self::B<((dynamic) →* dynamic) →* dynamic>* = dynamic>() →* void fsource11 = self::toF<self::B<((dynamic) →* dynamic) →* dynamic>*>(source11); |
| <Y extends self::B<((dynamic) →* dynamic) →* dynamic>* = dynamic>() →* void target11 = fsource11; |
| self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* source12; |
| <Y extends self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* = dynamic>() →* void fsource12 = self::toF<self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>*>(source12); |
| <Y extends self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* = dynamic>() →* void target12 = fsource12; |
| } |
| static method main() → dynamic { |
| self::testTopLevel(); |
| self::testNested(); |
| } |