| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| import "dart:_internal" as _in; |
| |
| static method main(core::List<core::String> args) → dynamic { |
| lowered () →? core::int #recursiveInitLocal; |
| function #recursiveInitLocal#get() → () → core::int |
| return let final () →? core::int #t1 = #recursiveInitLocal in #t1 == null ?{() → core::int} throw new _in::LateError::localNI("recursiveInitLocal") : #t1{() → core::int}; |
| function #recursiveInitLocal#set(() → core::int #t2) → dynamic |
| return #recursiveInitLocal = #t2; |
| lowered final core::int? #local; |
| function #local#get() → core::int |
| return let final core::int? #t3 = #local in #t3 == null ?{core::int} let final core::int #t4 = #recursiveInitLocal#get(){() → () → core::int}(){() → core::int} in #local == null ?{core::int} #local = #t4 : throw new _in::LateError::localADI("local") : #t3{core::int}; |
| core::bool doRecursiveInitLocal = true; |
| #recursiveInitLocal#set(() → core::int { |
| core::print("Executing initializer"); |
| if(doRecursiveInitLocal) { |
| doRecursiveInitLocal = false; |
| core::print("Trigger recursive initialization"); |
| core::int val = #local#get(){() → core::int}; |
| core::print("Final local has value ${val}"); |
| core::print("Returning 4 from initializer"); |
| return 4; |
| } |
| core::print("Returning 3 from initializer"); |
| return 3; |
| }){(() → core::int) → dynamic}; |
| self::throws(() → Null { |
| core::int val = #local#get(){() → core::int}; |
| core::print("Final local has value ${val}"); |
| }, "Read local"); |
| } |
| 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}"; |
| } |