| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| |
| static method main() → dynamic { |
| lowered core::int? #lateLocal; |
| lowered core::bool #lateLocal#isSet = false; |
| function #lateLocal#get() → core::int { |
| if(!#lateLocal#isSet) { |
| #lateLocal = 123; |
| #lateLocal#isSet = true; |
| } |
| return #lateLocal{core::int}; |
| } |
| function #lateLocal#set(core::int #t1) → dynamic { |
| #lateLocal#isSet = true; |
| return #lateLocal = #t1; |
| } |
| self::expect(123, #lateLocal#get(){() → core::int}); |
| self::expect(124, #lateLocal#set(124){(core::int) → dynamic}); |
| self::expect(124, #lateLocal#get(){() → core::int}); |
| function local<T extends core::Object? = dynamic>(T% value1, T% value2) → Null { |
| lowered T? #lateGenericLocal; |
| lowered core::bool #lateGenericLocal#isSet = false; |
| function #lateGenericLocal#get() → T% { |
| if(!#lateGenericLocal#isSet) { |
| #lateGenericLocal = value1; |
| #lateGenericLocal#isSet = true; |
| } |
| return #lateGenericLocal{T%}; |
| } |
| function #lateGenericLocal#set(T% #t2) → dynamic { |
| #lateGenericLocal#isSet = true; |
| return #lateGenericLocal = #t2; |
| } |
| self::expect(value1, #lateGenericLocal#get(){() → T%}); |
| self::expect(value2, #lateGenericLocal#set(value2){(T%) → dynamic}); |
| self::expect(value2, #lateGenericLocal#get(){() → T%}); |
| } |
| local<core::int?>(null, 0){(core::int?, core::int?) → Null}; |
| local<core::int?>(0, null){(core::int?, core::int?) → Null}; |
| local<core::int>(0, 42){(core::int, core::int) → Null}; |
| } |
| static method expect(dynamic expected, dynamic actual) → dynamic { |
| if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) |
| throw "Expected ${expected}, actual ${actual}"; |
| } |