blob: 2ad5eb6ea1e22ea470a2e715069d16a76f5f6775 [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class<E extends core::Object? = dynamic> extends core::Object {
final field self::Class::E% field;
constructor •(self::Class::E% field) self::Class<self::Class::E%>
: self::Class::field = field, super core::Object::•()
;
method returnTypeVariable() self::Class::E% {
lowered self::Class::E? #result;
lowered core::bool #result#isSet = false;
function #result#get() → self::Class::E% {
if(!#result#isSet) {
#result = this.{self::Class::field};
#result#isSet = true;
}
return #result{self::Class::E%};
}
function #result#set(self::Class::E% #t1) → dynamic {
#result#isSet = true;
return #result = #t1;
}
return #result#get.call();
}
}
static method returnNonNullable(core::int value) core::int {
lowered core::int? #result;
function #result#get() → core::int
return let final core::int? #t2 = #result in #t2.==(null) ?{core::int} #result = value : #t2{core::int};
function #result#set(core::int #t3) → dynamic
return #result = #t3;
return #result#get.call();
}
static method returnNullable(core::int? value) core::int? {
lowered core::int? #result;
lowered core::bool #result#isSet = false;
function #result#get() → core::int? {
if(!#result#isSet) {
#result = value;
#result#isSet = true;
}
return #result;
}
function #result#set(core::int? #t4) → dynamic {
#result#isSet = true;
return #result = #t4;
}
return #result#get.call();
}
static method main() dynamic {
self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}());
self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}());
self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}());
self::expect(42, self::returnNonNullable(42));
self::expect(87, self::returnNullable(87));
self::expect(null, self::returnNullable(null));
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!expected.{core::Object::==}(actual))
throw "Expected ${expected}, actual ${actual}";
}