| library #lib /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| import "dart:ffi" as ffi; |
| import "dart:_internal" as _in; |
| |
| import "dart:ffi"; |
| |
| class MyFinalizable extends core::Object implements ffi::Finalizable { |
| field core::int internalValue = 4; |
| synthetic constructor •() → self::MyFinalizable |
| : super core::Object::•() |
| ; |
| } |
| static method main() → void { |
| final self::MyFinalizable finalizable = new self::MyFinalizable::•(); |
| { |
| final self::MyFinalizable finalizable2 = new self::MyFinalizable::•(); |
| _in::reachabilityFence(finalizable2); |
| } |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 42) { |
| { |
| _in::reachabilityFence(finalizable); |
| return; |
| } |
| } |
| else { |
| try |
| try { |
| final self::MyFinalizable finalizable3 = new self::MyFinalizable::•(); |
| {} |
| _in::reachabilityFence(finalizable3); |
| } |
| on core::Exception catch(no-exception-var) { |
| final self::MyFinalizable finalizable4 = new self::MyFinalizable::•(); |
| _in::reachabilityFence(finalizable4); |
| } |
| finally { |
| final self::MyFinalizable finalizable5 = new self::MyFinalizable::•(); |
| _in::reachabilityFence(finalizable5); |
| } |
| try { |
| final self::MyFinalizable finalizable13 = new self::MyFinalizable::•(); |
| try |
| try { |
| final self::MyFinalizable finalizable14 = new self::MyFinalizable::•(); |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 100) { |
| throw block { |
| final core::Exception :expressionValueWrappedFinalizable = core::Exception::•("foo"); |
| _in::reachabilityFence(finalizable14); |
| } =>:expressionValueWrappedFinalizable; |
| } |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 101) { |
| throw block { |
| final core::Error :expressionValueWrappedFinalizable = new core::Error::•(); |
| _in::reachabilityFence(finalizable); |
| _in::reachabilityFence(finalizable13); |
| _in::reachabilityFence(finalizable14); |
| } =>:expressionValueWrappedFinalizable; |
| } |
| _in::reachabilityFence(finalizable14); |
| } |
| on core::Exception catch(final core::Exception e) { |
| core::print(e); |
| block { |
| _in::reachabilityFence(finalizable13); |
| } =>rethrow; |
| } |
| finally { |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1000) { |
| throw block { |
| final core::Exception :expressionValueWrappedFinalizable = core::Exception::•("bar"); |
| _in::reachabilityFence(finalizable13); |
| } =>:expressionValueWrappedFinalizable; |
| } |
| } |
| _in::reachabilityFence(finalizable13); |
| } |
| on core::Exception catch(final core::Exception e) { |
| core::print(e); |
| } |
| } |
| #L1: |
| switch(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int}) { |
| #L2: |
| case #C1: |
| case #C2: |
| { |
| final self::MyFinalizable finalizable6 = new self::MyFinalizable::•(); |
| { |
| _in::reachabilityFence(finalizable); |
| _in::reachabilityFence(finalizable6); |
| return; |
| } |
| } |
| #L3: |
| case #C3: |
| { |
| final self::MyFinalizable finalizable7 = new self::MyFinalizable::•(); |
| { |
| _in::reachabilityFence(finalizable7); |
| break #L1; |
| } |
| } |
| #L4: |
| case #C4: |
| { |
| final self::MyFinalizable finalizable70 = new self::MyFinalizable::•(); |
| #L5: |
| switch(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int}) { |
| #L6: |
| case #C5: |
| { |
| final self::MyFinalizable finalizable71 = new self::MyFinalizable::•(); |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 44) { |
| { |
| _in::reachabilityFence(finalizable70); |
| _in::reachabilityFence(finalizable71); |
| continue #L4; |
| } |
| } |
| { |
| _in::reachabilityFence(finalizable71); |
| break #L5; |
| } |
| } |
| } |
| { |
| _in::reachabilityFence(finalizable70); |
| continue #L3; |
| } |
| } |
| #L7: |
| default: |
| { |
| final self::MyFinalizable finalizable8 = new self::MyFinalizable::•(); |
| _in::reachabilityFence(finalizable8); |
| } |
| } |
| #L8: |
| for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) |
| #L9: |
| { |
| final self::MyFinalizable finalizable9 = new self::MyFinalizable::•(); |
| for (core::int j = 0; j.{core::num::<}(10){(core::num) → core::bool}; j = j.{core::num::+}(1){(core::num) → core::int}) |
| #L10: |
| { |
| final self::MyFinalizable finalizable10 = new self::MyFinalizable::•(); |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 42) { |
| { |
| _in::reachabilityFence(finalizable9); |
| _in::reachabilityFence(finalizable10); |
| break #L8; |
| } |
| } |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1337) { |
| { |
| _in::reachabilityFence(finalizable9); |
| _in::reachabilityFence(finalizable10); |
| break #L8; |
| } |
| } |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1) { |
| { |
| _in::reachabilityFence(finalizable10); |
| break #L10; |
| } |
| } |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 3) { |
| { |
| _in::reachabilityFence(finalizable9); |
| _in::reachabilityFence(finalizable10); |
| break #L9; |
| } |
| } |
| _in::reachabilityFence(finalizable10); |
| } |
| _in::reachabilityFence(finalizable9); |
| } |
| #L11: |
| { |
| final self::MyFinalizable finalizable11 = new self::MyFinalizable::•(); |
| #L12: |
| { |
| final self::MyFinalizable finalizable12 = new self::MyFinalizable::•(); |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 1) { |
| { |
| _in::reachabilityFence(finalizable11); |
| _in::reachabilityFence(finalizable12); |
| break #L11; |
| } |
| } |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 3) { |
| { |
| _in::reachabilityFence(finalizable12); |
| break #L12; |
| } |
| } |
| _in::reachabilityFence(finalizable12); |
| } |
| _in::reachabilityFence(finalizable11); |
| } |
| for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) { |
| final self::MyFinalizable finalizable15 = new self::MyFinalizable::•(); |
| _in::reachabilityFence(finalizable15); |
| } |
| core::int i = 0; |
| while (i.{core::num::<}(10){(core::num) → core::bool}) { |
| final self::MyFinalizable finalizable16 = new self::MyFinalizable::•(); |
| i = i.{core::num::+}(1){(core::num) → core::int}; |
| _in::reachabilityFence(finalizable16); |
| } |
| { |
| core::Iterator<ffi::Finalizable> :sync-for-iterator = core::Iterable::generate<ffi::Finalizable>(5, (core::int index) → self::MyFinalizable => new self::MyFinalizable::•()).{core::Iterable::iterator}{core::Iterator<ffi::Finalizable>}; |
| for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { |
| final ffi::Finalizable finalizable17 = :sync-for-iterator.{core::Iterator::current}{ffi::Finalizable}; |
| { |
| _in::reachabilityFence(finalizable17); |
| } |
| } |
| } |
| i = 0; |
| for (ffi::Finalizable finalizable18 = new self::MyFinalizable::•(); i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) { |
| _in::reachabilityFence(finalizable18); |
| } |
| _in::reachabilityFence(finalizable); |
| } |
| static method doSomething(core::int a) → core::int |
| return a; |
| static method createClosure() → () → void { |
| final self::MyFinalizable finalizable20 = new self::MyFinalizable::•(); |
| return block { |
| final () → void :expressionValueWrappedFinalizable = () → void { |
| if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 42) { |
| { |
| _in::reachabilityFence(finalizable20); |
| return; |
| } |
| } |
| self::doSomething(finalizable20.{self::MyFinalizable::internalValue}{core::int}); |
| _in::reachabilityFence(finalizable20); |
| }; |
| _in::reachabilityFence(finalizable20); |
| } =>:expressionValueWrappedFinalizable; |
| } |
| static method createNestedClosure() → () → () → () → void { |
| final self::MyFinalizable finalizable40 = new self::MyFinalizable::•(); |
| return block { |
| final () → () → () → void :expressionValueWrappedFinalizable = () → () → () → void { |
| final self::MyFinalizable finalizable41 = new self::MyFinalizable::•(); |
| return block { |
| final () → () → void :expressionValueWrappedFinalizable = () → () → void { |
| final self::MyFinalizable finalizable42 = new self::MyFinalizable::•(); |
| return block { |
| final () → void :expressionValueWrappedFinalizable = () → void { |
| self::doSomething(finalizable40.{self::MyFinalizable::internalValue}{core::int}); |
| self::doSomething(finalizable41.{self::MyFinalizable::internalValue}{core::int}); |
| self::doSomething(finalizable42.{self::MyFinalizable::internalValue}{core::int}); |
| _in::reachabilityFence(finalizable40); |
| _in::reachabilityFence(finalizable41); |
| _in::reachabilityFence(finalizable42); |
| }; |
| _in::reachabilityFence(finalizable40); |
| _in::reachabilityFence(finalizable41); |
| _in::reachabilityFence(finalizable42); |
| } =>:expressionValueWrappedFinalizable; |
| }; |
| _in::reachabilityFence(finalizable40); |
| _in::reachabilityFence(finalizable41); |
| } =>:expressionValueWrappedFinalizable; |
| }; |
| _in::reachabilityFence(finalizable40); |
| } =>:expressionValueWrappedFinalizable; |
| } |
| static method createBadClosure() → () → void { |
| final self::MyFinalizable finalizable21 = new self::MyFinalizable::•(); |
| final core::int internalValue = finalizable21.{self::MyFinalizable::internalValue}{core::int}; |
| return block { |
| final () → void :expressionValueWrappedFinalizable = () → void { |
| self::doSomething(internalValue); |
| }; |
| _in::reachabilityFence(finalizable21); |
| } =>:expressionValueWrappedFinalizable; |
| } |
| static method reassignment() → void { |
| self::MyFinalizable finalizable30 = new self::MyFinalizable::•(); |
| self::doSomething(4); |
| finalizable30 = block { |
| final self::MyFinalizable :expressionValueWrappedFinalizable = new self::MyFinalizable::•(); |
| _in::reachabilityFence(finalizable30); |
| } =>:expressionValueWrappedFinalizable; |
| _in::reachabilityFence(finalizable30); |
| } |
| constants { |
| #C1 = 1 |
| #C2 = 2 |
| #C3 = 3 |
| #C4 = 4 |
| #C5 = 5 |
| } |