| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| class Other extends core::Object { |
| field core::String text = 42.{core::int::toString}(){() → core::String}; |
| synthetic constructor •() → self::Other |
| : super core::Object::•() |
| ; |
| } |
| class Inner extends core::Object { |
| field self::Other? other = core::int::parse("3") =={core::num::==}{(core::Object) → core::bool} 3 ?{self::Other?} new self::Other::•() : null; |
| synthetic constructor •() → self::Inner |
| : super core::Object::•() |
| ; |
| } |
| abstract sealed class Wrapper extends core::Object { |
| synthetic constructor •() → self::Wrapper |
| : super core::Object::•() |
| ; |
| } |
| class WrapperA extends self::Wrapper { |
| field self::Inner inner = new self::Inner::•(); |
| synthetic constructor •() → self::WrapperA |
| : super self::Wrapper::•() |
| ; |
| } |
| class WrapperB extends self::Wrapper { |
| field self::Inner inner = new self::Inner::•(); |
| synthetic constructor •() → self::WrapperB |
| : super self::Wrapper::•() |
| ; |
| } |
| static field self::Wrapper obj = core::int::parse("1") =={core::num::==}{(core::Object) → core::bool} 1 ?{self::Wrapper} new self::WrapperB::•() : new self::WrapperA::•(); |
| static method main() → void { |
| self::foo(self::obj); |
| } |
| static method foo(self::Wrapper wrapper) → void { |
| core::print( block { |
| core::String #t1; |
| final synthesized self::Wrapper #0#0 = wrapper; |
| synthesized self::Other? #0#3; |
| synthesized core::bool #0#3#isSet = false; |
| synthesized core::bool #0#5; |
| synthesized core::bool #0#5#isSet = false; |
| #L1: |
| { |
| { |
| final hoisted self::Other other; |
| if(#0#0 is self::WrapperA && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t2 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) { |
| other = let self::Other? #t3 = #0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t4 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?} in #t3 == null ?{self::Other} #t3 as{Unchecked} self::Other : #t3{self::Other}; |
| #t1 = other.{self::Other::text}{core::String}; |
| break #L1; |
| } |
| } |
| { |
| if(#0#0 is self::WrapperA && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool* #t5 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t6 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperA}.{self::WrapperA::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) { |
| #t1 = "no other"; |
| break #L1; |
| } |
| } |
| { |
| final hoisted self::Other other; |
| if(#0#0 is self::WrapperB && (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t7 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) is self::Other) { |
| other = let self::Other? #t8 = #0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t9 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?} in #t8 == null ?{self::Other} #t8 as{Unchecked} self::Other : #t8{self::Other}; |
| #t1 = other.{self::Other::text}{core::String}; |
| break #L1; |
| } |
| } |
| { |
| if(#0#0 is self::WrapperB && (#0#5#isSet ?{core::bool} #0#5{core::bool} : let final core::bool* #t10 = #0#5#isSet = true in #0#5 = (#0#3#isSet ?{self::Other?} #0#3{self::Other?} : let final core::bool* #t11 = #0#3#isSet = true in #0#3 = #0#0{self::WrapperB}.{self::WrapperB::inner}{self::Inner}.{self::Inner::other}{self::Other?}) == null)) { |
| #t1 = "no other"; |
| break #L1; |
| } |
| } |
| } |
| } =>#t1); |
| } |