blob: 32ef6e6f17fddb785fd6d9b9cc8865cbfd2975ec [file] [log] [blame]
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();
}