blob: 3c3706825e7821ce6fe8e03f1d7a1bddc0056750 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() self::Class*
: 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
}
extension Extension on self::Class* {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
tearoff method1 = self::Extension|get#method1;
method method2 = self::Extension|method2;
tearoff method2 = self::Extension|get#method2;
method method3 = self::Extension|method3;
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
static method Extension|method0(lowered final self::Class* #this, [dynamic a = #C1]) → dynamic
return a;
static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
return ([dynamic a = #C1]) → dynamic => self::Extension|method0(#this, a);
static method Extension|method1(lowered final self::Class* #this, [dynamic a = #C2]) → dynamic
return a;
static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
return ([dynamic a = #C2]) → dynamic => self::Extension|method1(#this, a);
static method Extension|method2(lowered final self::Class* #this, {dynamic b = #C3}) → dynamic
return b;
static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
return c.call();
static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() dynamic
return 123;
static method main() dynamic {
self::Class* c = new self::Class::•();
([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
self::expect(0, tearOff0.call(0));
self::expect(null, tearOff0.call());
([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
self::expect(0, tearOff1.call(0));
self::expect(42, tearOff1.call());
({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
self::expect(0, tearOff2.call(b: 0));
self::expect(87, tearOff2.call());
({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
self::expect(0, tearOff3.call(c: () core::int* => 0));
self::expect(123, tearOff3.call());
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!expected.{core::Object::==}(actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
constants {
#C1 = null
#C2 = 42
#C3 = 87
#C4 = tearoff self::Extension|staticMethod
}