| ------------ C1. ------------ |
| %this = _Parameter #0 [_T (#lib::C1)+] |
| t1 = _Call direct [dart.core::Object.] (%this) |
| RESULT: _T {}? |
| ------------ C2. ------------ |
| %this = _Parameter #0 [_T (#lib::C2)+] |
| t1 = _Call direct [dart.core::Object.] (%this) |
| RESULT: _T {}? |
| ------------ C3. ------------ |
| %this = _Parameter #0 [_T (#lib::C3)+] |
| t1 = _Call direct [dart.core::Object.] (%this) |
| RESULT: _T {}? |
| ------------ C4. ------------ |
| %this = _Parameter #0 [_T (#lib::C4)+] |
| t1 = _Call direct [dart.core::Object.] (%this) |
| RESULT: _T {}? |
| ------------ TestEnum. ------------ |
| %this = _Parameter #0 [_T (#lib::TestEnum)+] |
| %index = _Parameter #1 [_T (dart.core::int)+?] |
| %_name = _Parameter #2 [_T (dart.core::String)+?] |
| t3 = _Call direct set [#lib::TestEnum.index] (%this, %index) |
| t4 = _Call direct set [#lib::TestEnum._name] (%this, %_name) |
| t5 = _Call direct [dart.core::Object.] (%this) |
| RESULT: _T {}? |
| ------------ TestEnum.toString ------------ |
| %this = _Parameter #0 [_T (#lib::TestEnum)+] |
| t1* = _Call virtual get [#lib::TestEnum._name] (%this) |
| RESULT: t1 |
| ------------ TestEnum.values ------------ |
| |
| RESULT: _T (dart.core::_ImmutableList, const <#lib::TestEnum*>[const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}, const #lib::TestEnum{#lib::TestEnum.index: 1, #lib::TestEnum._name: "TestEnum.v2"}]) |
| ------------ TestEnum.v1 ------------ |
| |
| RESULT: _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}) |
| ------------ TestEnum.v2 ------------ |
| |
| RESULT: _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 1, #lib::TestEnum._name: "TestEnum.v2"}) |
| ------------ foo ------------ |
| %x = _Parameter #0 [_T ANY?] |
| RESULT: _T {}? |
| ------------ bar ------------ |
| %x = _Parameter #0 [_T ANY?] |
| RESULT: _T {}? |
| ------------ baz ------------ |
| %x = _Parameter #0 [_T ANY?] |
| RESULT: _T {}? |
| ------------ sequence ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t1 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t2 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| RESULT: _T (#lib::C3) |
| ------------ if1 ------------ |
| %cond = _Parameter #0 [_T (dart.core::bool)+?] |
| t1 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t2 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t3 = _Call direct [#lib::foo] (_T (#lib::C2)) |
| x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C1)) |
| RESULT: x_0 |
| ------------ if2 ------------ |
| %cond1 = _Parameter #0 [_T (dart.core::bool)+?] |
| %cond2 = _Parameter #1 [_T (dart.core::bool)+?] |
| t2 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t3 = _Call direct [#lib::foo] (_T (#lib::C1)) |
| t4 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t5 = _Call direct [#lib::bar] (_T (#lib::C2)) |
| x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2)) |
| RESULT: x_0 |
| ------------ if3 ------------ |
| %cond1 = _Parameter #0 [_T (dart.core::bool)+?] |
| %cond2 = _Parameter #1 [_T (dart.core::bool)+?] |
| t2 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t3 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t4* = _Call direct [#lib::foo] (_T (#lib::C2)) |
| t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*) |
| t6 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| t7* = _Call direct [#lib::foo] (_T (#lib::C3)) |
| t8 = _TypeCheck (t7 against dart.core::bool*) (for #lib::foo(x = new #lib::C3()) as dart.core::bool*) |
| x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C3)) |
| t10 = _Call direct [#lib::bar] (x_0) |
| RESULT: x_0 |
| ------------ if4 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t1 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t2* = _Call direct [#lib::foo] (_T (#lib::C2)) |
| t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*) |
| t4 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| t5* = _Call direct [#lib::foo] (_T (#lib::C3)) |
| t6 = _TypeCheck (t5 against dart.core::bool*) (for #lib::foo(x = new #lib::C3()) as dart.core::bool*) |
| t7 = _Call direct [#lib::bar] (_T (#lib::C3)) |
| x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C3)) |
| RESULT: x_0 |
| ------------ if5 ------------ |
| %cond = _Parameter #0 [_T (dart.core::bool)+?] |
| t1 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t2 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t3 = _Call direct [#lib::foo] (_T (#lib::C1)) |
| RESULT: _T {}? |
| ------------ if6a ------------ |
| %x = _Parameter #0 [_T (dart.core::bool)+?] |
| t1 = _Call direct [#lib::foo] (_T (dart.core::bool, true)) |
| t2 = _Call direct [#lib::bar] (_T (dart.core::bool, false)) |
| x_0 = _Join [dart.core::bool*] (_T (dart.core::bool, true), _T (dart.core::bool, false)) |
| t4 = _Call direct [#lib::baz] (x_0) |
| RESULT: _T {}? |
| ------------ if6b ------------ |
| %x = _Parameter #0 [_T ANY?] |
| t1 = _TypeCheck (%x against dart.core::bool*) (for x as dart.core::bool*) |
| t2 = _Call direct [#lib::foo] (_T (dart.core::bool, true)) |
| t3 = _Call direct [#lib::bar] (_T (dart.core::bool, false)) |
| x_0 = _Join [dynamic] (_T (dart.core::bool, true), _T (dart.core::bool, false)) |
| t5 = _Call direct [#lib::baz] (x_0) |
| RESULT: _T {}? |
| ------------ if7 ------------ |
| %x = _Parameter #0 [_T (dart.core::int)+?] |
| %y = _Parameter #1 [_T (dart.core::String)+?] |
| %z = _Parameter #2 [_T ANY?] |
| t3* = _Call [dart.core::num.==] (%x, _T (dart.core::_Smi, 5)) |
| t4* = _Call [dart.core::String.==] (%y, _T (dart.core::_OneByteString, "hi")) |
| t5 = _Call direct [dart.core::Object.==] (%z, _T {}?) |
| t6 = _Narrow (%z to _T ANY) |
| t7 = _Call direct [#lib::foo] (_T (dart.core::_Smi, 5)) |
| t8 = _Call direct [#lib::foo] (_T (dart.core::_OneByteString, "hi")) |
| t9 = _Call direct [#lib::foo] (t6) |
| RESULT: _T {}? |
| ------------ if8 ------------ |
| %x = _Parameter #0 [_T ANY?] |
| t1 = _Narrow (%x to _T (dart.core::String)+) |
| t2 = _Call direct [#lib::foo] (t1) |
| RESULT: _T {}? |
| ------------ if9 ------------ |
| %x = _Parameter #0 [_T (#lib::TestEnum)+?] |
| t1* = _Call [#lib::TestEnum.==] (%x, _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"})) |
| t2 = _Call direct [#lib::foo] (_T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"})) |
| RESULT: _T {}? |
| ------------ conditional1 ------------ |
| %cond1 = _Parameter #0 [_T (dart.core::bool)+?] |
| %cond2 = _Parameter #1 [_T (dart.core::bool)+?] |
| t2 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t3 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t4* = _Call direct [#lib::foo] (_T (#lib::C2)) |
| t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*) |
| t6 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| t7 = _Call direct [#lib::C4.] (_T (#lib::C4)) |
| x_0 = _Join [dynamic] (_T (#lib::C3), _T (#lib::C4)) |
| t9 = _Call direct [#lib::foo] (x_0) |
| t10 = _Join [dart.core::Object*] (_T (#lib::C3), _T (#lib::C4)) |
| t11 = _Narrow (t10 to _T (dart.core::Object)+?) |
| t12 = _Call direct [#lib::bar] (t11) |
| RESULT: _T {}? |
| ------------ conditional2 ------------ |
| %cond1 = _Parameter #0 [_T (dart.core::bool)+?] |
| %cond2 = _Parameter #1 [_T (dart.core::bool)+?] |
| t2 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t3 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t4* = _Call direct [#lib::foo] (_T (#lib::C2)) |
| t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*) |
| t6 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| t7 = _Call direct [#lib::C4.] (_T (#lib::C4)) |
| t8* = _Call direct [dart.core::_GrowableList._literal2] (#lib::C4*, _T (#lib::C4), _T {}) |
| t9* = _Call direct [#lib::foo] (t8) |
| t10 = _Call direct [#lib::foo] (_T (#lib::C3)) |
| t11 = _Join [dynamic] (_T (#lib::C3), t9) |
| t12 = _Call direct [#lib::bar] (t11) |
| RESULT: _T {}? |
| ------------ loop1 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2)) |
| t2* = _Call direct [#lib::foo] (x_0) |
| t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*) |
| t4 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t5 = _Call direct [#lib::bar] (x_0) |
| RESULT: x_0 |
| ------------ loop2 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C3)) |
| t2 = _Call direct [#lib::foo] (x_0) |
| t3 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t4 = _Call direct [#lib::bar] (_T (#lib::C2)) |
| t5 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| t6* = _Call direct [#lib::bar] (_T (#lib::C3)) |
| t7 = _TypeCheck (t6 against dart.core::bool*) (for #lib::bar(x = new #lib::C3()) as dart.core::bool*) |
| RESULT: _T (#lib::C3) |
| ------------ loop3 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t1 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t2* = _Call direct [#lib::foo] (_T (#lib::C2)) |
| t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*) |
| t4 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| t5 = _Call direct [#lib::bar] (_T (#lib::C2)) |
| RESULT: _T (#lib::C2) |
| ------------ loop4 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t1 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t2* = _Call direct [#lib::foo] (_T (#lib::C2)) |
| t3* = _Call direct [dart.core::_GrowableList._literal1] (dynamic?, t2) |
| t4* = _Call get [dart.core::Iterable.iterator] (t3) |
| t5* = _Call [dart.core::Iterator.moveNext] (t4) |
| t6 = _Narrow (t4 to _T ANY) |
| t7 = _Call get [dart.core::Iterator.current] (t6) |
| x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C3)) |
| t9 = _Call direct [#lib::foo] (x_0) |
| t10 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| RESULT: x_0 |
| ------------ loop5 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C3)) |
| t2* = _Call direct [#lib::foo] (x_0) |
| t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*) |
| t4 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t5* = _Call direct [#lib::bar] (_T (#lib::C2)) |
| t6 = _TypeCheck (t5 against dart.core::bool*) (for #lib::bar(x) as dart.core::bool*) |
| t7 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| x_1 = _Join [dynamic] (x_0, _T (#lib::C2)) |
| RESULT: x_1 |
| ------------ loop6 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| x_1 = _Join [dynamic] (_T (#lib::C3), _T (#lib::C2)) |
| x_0 = _Join [dynamic] (_T (#lib::C1), x_1) |
| t3* = _Call direct [#lib::foo] (x_0) |
| t4 = _TypeCheck (t3 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*) |
| t5 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t6* = _Call direct [#lib::bar] (_T (#lib::C2)) |
| t7 = _TypeCheck (t6 against dart.core::bool*) (for #lib::bar(x) as dart.core::bool*) |
| t8 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| RESULT: x_0 |
| ------------ try1 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t1 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2), _T (#lib::C3)) |
| t3 = _Call direct [#lib::foo] (x_0) |
| t4 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| t5 = _Call direct [#lib::bar] (x_0) |
| t6 = _Call direct [#lib::C4.] (_T (#lib::C4)) |
| RESULT: _T (#lib::C4) |
| ------------ closure1 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2)) |
| t2 = _Call direct [#lib::foo] (x_0) |
| t3 = _Call direct [#lib::bar] (x_0) |
| t4 = _Call direct [#lib::foo] (_T ANY?) |
| t5 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| RESULT: _T {}? |
| ------------ closure2 ------------ |
| t0 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2)) |
| t2 = _Call direct [#lib::foo] (x_0) |
| t3 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t4 = _Call direct [#lib::foo] (_T ANY?) |
| RESULT: x_0 |
| ------------ switch1 ------------ |
| %selector = _Parameter #0 [_T (dart.core::int)+?] |
| t1 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t2 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t3 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| x_2 = _Join [dynamic] (_T (#lib::C3), _T (#lib::C1)) |
| x_3 = _Join [dynamic] (x_2, _T (#lib::C2)) |
| RESULT: x_3 |
| ------------ switch2 ------------ |
| %selector = _Parameter #0 [_T (dart.core::int)+?] |
| t1 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t2 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| t3 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| x_2 = _Join [dynamic] (_T (#lib::C3), _T (#lib::C2)) |
| RESULT: x_2 |
| ------------ switch3 ------------ |
| %selector = _Parameter #0 [_T (dart.core::int)+?] |
| t1 = _Call direct [#lib::C1.] (_T (#lib::C1)) |
| t2 = _Call direct [#lib::C2.] (_T (#lib::C2)) |
| x_1 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2)) |
| t4 = _Call direct [#lib::foo] (x_1) |
| t5 = _Call direct [#lib::C3.] (_T (#lib::C3)) |
| x_2 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C3)) |
| RESULT: x_2 |
| ------------ cast1 ------------ |
| %x = _Parameter #0 [_T ANY?] |
| t1 = _TypeCheck (%x against #lib::C1*) (for x as #lib::C1*) |
| t2 = _Call direct [#lib::foo] (t1) |
| t3 = _Call direct [#lib::bar] (t1) |
| RESULT: _T {}? |
| ------------ main ------------ |
| |
| RESULT: _T {}? |