| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| class Class<T extends core::Object* = dynamic> extends core::Object { |
| synthetic constructor •() → self::Class<self::Class::T*>* |
| : super core::Object::•() |
| ; |
| method method(generic-covariant-impl self::Class::T* a) → self::Class::T* |
| return a; |
| 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 |
| } |
| extension Extension<T extends core::Object* = dynamic> on self::Class<T*>* { |
| method call = self::Extension|call; |
| tearoff call = self::Extension|get#call; |
| } |
| static method Extension|call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|call::T*>* #this, self::Extension|call::T* a) → self::Extension|call::T* |
| return #this.{self::Class::method}(a){(self::Extension|call::T*) →* self::Extension|call::T*}; |
| static method Extension|get#call<T extends core::Object* = dynamic>(lowered final self::Class<self::Extension|get#call::T*>* #this) → (self::Extension|get#call::T*) →* self::Extension|get#call::T* |
| return (self::Extension|get#call::T* a) → self::Extension|get#call::T* => self::Extension|call<self::Extension|get#call::T*>(#this, a); |
| static method main() → dynamic { |
| self::Class<core::int*>* c = new self::Class::•<core::int*>(); |
| self::expect(42, self::Extension|call<core::int*>(c, 42)); |
| self::expect(87, self::Extension|call<core::int*>(c, 87)); |
| self::expect(123, self::Extension|call<core::int*>(c, 123)); |
| self::expect(42, self::Extension|call<core::int*>(c, 42)); |
| self::expect(87, self::Extension|call<core::int*>(c, 87)); |
| self::expect(123, self::Extension|call<core::int*>(c, 123)); |
| } |
| static method expect(dynamic expected, dynamic actual) → dynamic { |
| if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) { |
| throw "Mismatch: expected=${expected}, actual=${actual}"; |
| } |
| } |