blob: c844073eaf362d1e198e0c8aef9b4540b60a3195 [file] [log] [blame]
library /*isNonNullableByDefault*/;
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(covariant-by-class self::Class::T% a) self::Class::T%
return a;
}
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}";
}
}