| library; | |
| import self as self; | |
| import "dart:core" as core; | |
| abstract class A extends core::Object { | |
| synthetic constructor •() → self::A | |
| : super core::Object::•() | |
| ; | |
| abstract get b() → self::B; | |
| abstract get i() → core::int; | |
| } | |
| abstract class B extends core::Object { | |
| synthetic constructor •() → self::B | |
| : super core::Object::•() | |
| ; | |
| abstract get c() → self::C; | |
| abstract get i() → core::int; | |
| } | |
| abstract class C extends core::Object { | |
| synthetic constructor •() → self::C | |
| : super core::Object::•() | |
| ; | |
| abstract get i() → core::int; | |
| } | |
| static method ifCase(dynamic o) → dynamic { | |
| { | |
| final synthesized dynamic #0#0 = o; | |
| { | |
| hoisted self::A a; | |
| if(#0#0 is self::A) { | |
| a = #0#0{self::A}; | |
| { | |
| core::print(a); | |
| } | |
| } | |
| } | |
| } | |
| { | |
| final synthesized dynamic #1#0 = o; | |
| { | |
| hoisted self::B b; | |
| if(#1#0 is self::A) { | |
| b = #1#0{self::A}.{self::A::b}{self::B}; | |
| { | |
| core::print(b); | |
| } | |
| } | |
| } | |
| } | |
| { | |
| final synthesized dynamic #2#0 = o; | |
| { | |
| hoisted self::C c; | |
| if(#2#0 is self::A) { | |
| c = #2#0{self::A}.{self::A::b}{self::B}.{self::B::c}{self::C}; | |
| { | |
| core::print(c); | |
| } | |
| } | |
| } | |
| } | |
| { | |
| final synthesized dynamic #3#0 = o; | |
| { | |
| hoisted core::int i; | |
| if(#3#0 is self::A) { | |
| i = #3#0{self::A}.{self::A::b}{self::B}.{self::B::c}{self::C}.{self::C::i}{core::int}; | |
| { | |
| core::print(i); | |
| } | |
| } | |
| } | |
| } | |
| { | |
| final synthesized dynamic #4#0 = o; | |
| { | |
| hoisted self::B b##1; | |
| hoisted core::int i##1; | |
| if(#4#0 is self::A) { | |
| b##1 = #4#0{self::A}.{self::A::b}{self::B}; | |
| i##1 = #4#0{self::A}.{self::A::i}{core::int}; | |
| { | |
| core::print(b##1); | |
| core::print(i##1); | |
| } | |
| } | |
| } | |
| } | |
| { | |
| final synthesized dynamic #5#0 = o; | |
| final const synthesized core::int #5#3 = #C1; | |
| { | |
| hoisted self::B b##2; | |
| if(#5#0 is self::A && #C1 =={core::num::==}{(core::Object) → core::bool} #5#0{self::A}.{self::A::i}{core::int}) { | |
| b##2 = #5#0{self::A}.{self::A::b}{self::B}; | |
| { | |
| core::print(b##2); | |
| } | |
| } | |
| } | |
| } | |
| { | |
| final synthesized dynamic #6#0 = o; | |
| final const synthesized core::int #6#4 = #C1; | |
| { | |
| hoisted self::B b##3; | |
| if(#6#0 is self::A && (let final dynamic #t1 = b##3 = #6#0{self::A}.{self::A::b}{self::B} in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #6#0{self::A}.{self::A::i}{core::int}) { | |
| core::print(b##3); | |
| } | |
| } | |
| } | |
| { | |
| final synthesized dynamic #7#0 = o; | |
| synthesized self::B #7#2; | |
| synthesized core::bool #7#2#isSet = false; | |
| final const synthesized core::int #7#4 = #C1; | |
| final const synthesized core::int #7#8 = #C2; | |
| { | |
| hoisted self::B b##4; | |
| hoisted self::C c##1; | |
| if(#7#0 is self::A && (let final dynamic #t2 = b##4 = #7#2#isSet ?{self::B} #7#2 : let final dynamic #t3 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B} in true) && #C1 =={core::num::==}{(core::Object) → core::bool} #7#0{self::A}.{self::A::i}{core::int} && ((let final dynamic #t4 = c##1 = (#7#2#isSet ?{self::B} #7#2 : let final dynamic #t5 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#7#2#isSet ?{self::B} #7#2 : let final dynamic #t6 = #7#2#isSet = true in #7#2 = #7#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) { | |
| core::print(b##4); | |
| core::print(c##1); | |
| } | |
| } | |
| } | |
| } | |
| static method switchExpression(dynamic o) → dynamic | |
| return block { | |
| core::Object? #t7; | |
| final synthesized dynamic #0#0 = o; | |
| synthesized self::B #0#2; | |
| synthesized core::bool #0#2#isSet = false; | |
| synthesized self::C #0#3; | |
| synthesized core::bool #0#3#isSet = false; | |
| synthesized core::int #0#5; | |
| synthesized core::bool #0#5#isSet = false; | |
| synthesized core::bool #0#7; | |
| synthesized core::bool #0#7#isSet = false; | |
| final const synthesized core::int #0#6 = #C1; | |
| final const synthesized core::int #0#9 = #C2; | |
| #L1: | |
| { | |
| { | |
| hoisted self::A a; | |
| if(#0#0 is self::A) { | |
| a = #0#0{self::A}; | |
| #t7 = a; | |
| break #L1; | |
| } | |
| } | |
| { | |
| hoisted self::B b; | |
| if(#0#0 is self::A) { | |
| b = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t8 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}; | |
| #t7 = b; | |
| break #L1; | |
| } | |
| } | |
| { | |
| hoisted self::C c; | |
| if(#0#0 is self::A) { | |
| c = #0#3#isSet ?{self::C} #0#3 : let final dynamic #t9 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2 : let final dynamic #t10 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}; | |
| #t7 = c; | |
| break #L1; | |
| } | |
| } | |
| { | |
| hoisted core::int i; | |
| if(#0#0 is self::A) { | |
| i = (#0#3#isSet ?{self::C} #0#3 : let final dynamic #t11 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2 : let final dynamic #t12 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int}; | |
| #t7 = i; | |
| break #L1; | |
| } | |
| } | |
| { | |
| hoisted self::B b##1; | |
| hoisted core::int i##1; | |
| if(#0#0 is self::A) { | |
| b##1 = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t13 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}; | |
| i##1 = #0#5#isSet ?{core::int} #0#5 : let final dynamic #t14 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}; | |
| #t7 = "${b##1}${i##1}"; | |
| break #L1; | |
| } | |
| } | |
| { | |
| hoisted self::B b##2; | |
| if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7 : let final dynamic #t15 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5 : let final dynamic #t16 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) { | |
| b##2 = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t17 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}; | |
| #t7 = b##2; | |
| break #L1; | |
| } | |
| } | |
| { | |
| hoisted self::B b##3; | |
| if(#0#0 is self::A && (let final dynamic #t18 = b##3 = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t19 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7 : let final dynamic #t20 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5 : let final dynamic #t21 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) { | |
| #t7 = b##3; | |
| break #L1; | |
| } | |
| } | |
| { | |
| hoisted self::B b##4; | |
| hoisted self::C c##1; | |
| if(#0#0 is self::A && (let final dynamic #t22 = b##4 = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t23 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7 : let final dynamic #t24 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5 : let final dynamic #t25 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final dynamic #t26 = c##1 = #0#3#isSet ?{self::C} #0#3 : let final dynamic #t27 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2 : let final dynamic #t28 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2 : let final dynamic #t29 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) { | |
| #t7 = "${b##4}${c##1}"; | |
| break #L1; | |
| } | |
| } | |
| { | |
| if(true) { | |
| #t7 = null; | |
| break #L1; | |
| } | |
| } | |
| } | |
| } =>#t7; | |
| static method switchStatement(dynamic o) → dynamic { | |
| dynamic v; | |
| #L2: | |
| { | |
| final synthesized dynamic #0#0 = o; | |
| synthesized self::B #0#2; | |
| synthesized core::bool #0#2#isSet = false; | |
| synthesized self::C #0#3; | |
| synthesized core::bool #0#3#isSet = false; | |
| synthesized core::int #0#5; | |
| synthesized core::bool #0#5#isSet = false; | |
| synthesized core::bool #0#7; | |
| synthesized core::bool #0#7#isSet = false; | |
| final const synthesized core::int #0#6 = #C1; | |
| final const synthesized core::int #0#9 = #C2; | |
| { | |
| hoisted self::A a; | |
| if(#0#0 is self::A && (let final dynamic #t30 = a = #0#0{self::A} in true)) { | |
| { | |
| v = a; | |
| break #L2; | |
| } | |
| } | |
| } | |
| { | |
| hoisted self::B b; | |
| if(#0#0 is self::A && (let final dynamic #t31 = b = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t32 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) { | |
| { | |
| v = b; | |
| break #L2; | |
| } | |
| } | |
| } | |
| { | |
| hoisted self::C c; | |
| if(#0#0 is self::A && (let final dynamic #t33 = c = #0#3#isSet ?{self::C} #0#3 : let final dynamic #t34 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2 : let final dynamic #t35 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true)) { | |
| { | |
| v = c; | |
| break #L2; | |
| } | |
| } | |
| } | |
| { | |
| hoisted core::int i; | |
| if(#0#0 is self::A && (let final dynamic #t36 = i = (#0#3#isSet ?{self::C} #0#3 : let final dynamic #t37 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2 : let final dynamic #t38 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C}).{self::C::i}{core::int} in true)) { | |
| { | |
| v = i; | |
| break #L2; | |
| } | |
| } | |
| } | |
| { | |
| hoisted self::B b##1; | |
| hoisted core::int i##1; | |
| if(#0#0 is self::A && (let final dynamic #t39 = b##1 = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t40 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (let final dynamic #t41 = i##1 = #0#5#isSet ?{core::int} #0#5 : let final dynamic #t42 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int} in true)) { | |
| { | |
| v = "${b##1}${i##1}"; | |
| break #L2; | |
| } | |
| } | |
| } | |
| { | |
| hoisted self::B b##2; | |
| if(#0#0 is self::A && (#0#7#isSet ?{core::bool} #0#7 : let final dynamic #t43 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5 : let final dynamic #t44 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && (let final dynamic #t45 = b##2 = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t46 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true)) { | |
| { | |
| v = b##2; | |
| break #L2; | |
| } | |
| } | |
| } | |
| { | |
| hoisted self::B b##3; | |
| if(#0#0 is self::A && (let final dynamic #t47 = b##3 = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t48 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7 : let final dynamic #t49 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5 : let final dynamic #t50 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int}))) { | |
| { | |
| v = b##3; | |
| break #L2; | |
| } | |
| } | |
| } | |
| { | |
| hoisted self::B b##4; | |
| hoisted self::C c##1; | |
| if(#0#0 is self::A && (let final dynamic #t51 = b##4 = #0#2#isSet ?{self::B} #0#2 : let final dynamic #t52 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B} in true) && (#0#7#isSet ?{core::bool} #0#7 : let final dynamic #t53 = #0#7#isSet = true in #0#7 = #C1 =={core::num::==}{(core::Object) → core::bool} (#0#5#isSet ?{core::int} #0#5 : let final dynamic #t54 = #0#5#isSet = true in #0#5 = #0#0{self::A}.{self::A::i}{core::int})) && ((let final dynamic #t55 = c##1 = #0#3#isSet ?{self::C} #0#3 : let final dynamic #t56 = #0#3#isSet = true in #0#3 = (#0#2#isSet ?{self::B} #0#2 : let final dynamic #t57 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::c}{self::C} in true) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{self::B} #0#2 : let final dynamic #t58 = #0#2#isSet = true in #0#2 = #0#0{self::A}.{self::A::b}{self::B}).{self::B::i}{core::int})) { | |
| { | |
| v = "${b##4}${c##1}"; | |
| } | |
| } | |
| } | |
| } | |
| return v; | |
| } | |
| constants { | |
| #C1 = 5 | |
| #C2 = 7 | |
| } |