| 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}{self::Class::E%}; |
| #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(){() → self::Class::E%}; |
| } |
| } |
| static method returnNonNullable(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{core::int}; |
| } |
| function #result#set(core::int #t2) → dynamic { |
| #result#isSet = true; |
| return #result = #t2; |
| } |
| return #result#get(){() → core::int}; |
| } |
| 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? #t3) → dynamic { |
| #result#isSet = true; |
| return #result = #t3; |
| } |
| return #result#get(){() → core::int?}; |
| } |
| static method main() → dynamic { |
| self::expect(42, new self::Class::•<core::int>(42).{self::Class::returnTypeVariable}(){() → core::int}); |
| self::expect(87, new self::Class::•<core::int?>(87).{self::Class::returnTypeVariable}(){() → core::int?}); |
| self::expect(null, new self::Class::•<core::int?>(null).{self::Class::returnTypeVariable}(){() → core::int?}); |
| 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::==}{(core::Object) → core::bool} actual)) |
| throw "Expected ${expected}, actual ${actual}"; |
| } |