blob: b9c9ad392b61d524ac03acaa1dce162874c3c827 [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 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();
}