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