| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| import "dart:_internal" as _in; |
| |
| static method main() → dynamic { |
| core::bool b = (() → core::bool => false)(){() → core::bool}; |
| lowered final core::int? #lateLocal; |
| function #lateLocal#get() → core::int |
| return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} throw new _in::LateError::localNI("lateLocal") : #t1{core::int}; |
| function #lateLocal#set(core::int #t2) → dynamic |
| if(#lateLocal == null) |
| return #lateLocal = #t2; |
| else |
| throw new _in::LateError::localAI("lateLocal"); |
| if(b) { |
| #lateLocal#set(123){(core::int) → dynamic}; |
| } |
| self::throws(() → core::int => #lateLocal#get(){() → core::int}, "Read value from uninitialized lateLocal"); |
| if(!b) { |
| self::expect(123, #lateLocal#set(123){(core::int) → dynamic}); |
| self::expect(123, #lateLocal#get(){() → core::int}); |
| } |
| self::throws(() → core::int => #lateLocal#set(124){(core::int) → dynamic}, "Write value to initialized lateLocal"); |
| function local<T extends core::Object? = dynamic>(T% value) → Null { |
| lowered final T? #lateGenericLocal; |
| lowered core::bool #lateGenericLocal#isSet = false; |
| function #lateGenericLocal#get() → T% |
| return #lateGenericLocal#isSet ?{T%} #lateGenericLocal{T%} : throw new _in::LateError::localNI("lateGenericLocal"); |
| function #lateGenericLocal#set(T% #t3) → dynamic |
| if(#lateGenericLocal#isSet) |
| throw new _in::LateError::localAI("lateGenericLocal"); |
| else { |
| #lateGenericLocal#isSet = true; |
| return #lateGenericLocal = #t3; |
| } |
| if(b) { |
| #lateGenericLocal#set(value){(T%) → dynamic}; |
| } |
| self::throws(() → T% => #lateGenericLocal#get(){() → T%}, "Read value from uninitialized lateGenericLocal"); |
| if(!b) { |
| self::expect(value, #lateGenericLocal#set(value){(T%) → dynamic}); |
| self::expect(value, #lateGenericLocal#get(){() → T%}); |
| } |
| self::throws(() → T% => #lateGenericLocal#set(value){(T%) → dynamic}, "Write value to initialized lateGenericLocal"); |
| } |
| local<core::int?>(null){(core::int?) → Null}; |
| local<core::int?>(42){(core::int?) → Null}; |
| local<core::int>(42){(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}"; |
| } |
| static method throws(() → dynamic f, core::String message) → dynamic { |
| dynamic value; |
| try { |
| value = f(){() → dynamic}; |
| } |
| on core::Error catch(final core::Error e) { |
| core::print(e); |
| return; |
| } |
| throw "${message}: ${value}"; |
| } |