fdc765faad
TEST=existing Change-Id: I0a8fdf09f742b55357411f12dc6164d4050bb83c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196283 Commit-Queue: Johnni Winther <johnniwinther@google.com> Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
126 lines
9.9 KiB
Plaintext
126 lines
9.9 KiB
Plaintext
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*> = () →* X*;
|
|
typedef FconBound<contravariant X extends core::num*> = (X*) →* dynamic;
|
|
typedef FinvBound<invariant X extends 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<Null>*> = (X*) →* dynamic;
|
|
typedef FinvCyclicBound<invariant X extends self::A<X*>* = self::A<dynamic>*> = (X*) →* X*;
|
|
typedef FcovCyclicCoBound<X extends (X*) →* dynamic = (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<Null>*) →* dynamic source8;
|
|
<Y extends (self::A<Null>*) →* dynamic = dynamic>() →* void fsource8 = self::toF<(self::A<Null>*) →* dynamic>(source8);
|
|
<Y extends (self::A<Null>*) →* dynamic = dynamic>() →* void target8 = fsource8;
|
|
(self::A<dynamic>*) →* self::A<dynamic>* source9;
|
|
() →* (Null) →* dynamic source10;
|
|
<Y extends () →* (Null) →* dynamic = dynamic>() →* void fsource10 = self::toF<() →* (Null) →* dynamic>(source10);
|
|
<Y extends () →* (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<Null>*) →* dynamic>* source8;
|
|
<Y extends self::B<(self::A<Null>*) →* dynamic>* = dynamic>() →* void fsource8 = self::toF<self::B<(self::A<Null>*) →* dynamic>*>(source8);
|
|
<Y extends self::B<(self::A<Null>*) →* dynamic>* = dynamic>() →* void target8 = fsource8;
|
|
self::B<(self::A<dynamic>*) →* self::A<dynamic>*>* source9;
|
|
self::B<() →* (Null) →* dynamic>* source10;
|
|
<Y extends self::B<() →* (Null) →* dynamic>* = dynamic>() →* void fsource10 = self::toF<self::B<() →* (Null) →* dynamic>*>(source10);
|
|
<Y extends self::B<() →* (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();
|
|
}
|