1 - // MIR for `identity` before SeparateConstSwitch
2 + // MIR for `identity` after SeparateConstSwitch
4 fn identity(_1: Result<i32, i32>) -> Result<i32, i32> {
6 let mut _0: std::result::Result<i32, i32>;
8 let mut _3: std::ops::ControlFlow<std::result::Result<std::convert::Infallible, i32>, i32>;
9 let mut _4: std::result::Result<i32, i32>;
11 let _6: std::result::Result<std::convert::Infallible, i32>;
12 let mut _7: std::result::Result<std::convert::Infallible, i32>;
17 scope 8 (inlined #[track_caller] <Result<i32, i32> as FromResidual<Result<Infallible, i32>>>::from_residual) {
23 scope 10 (inlined <i32 as From<i32>>::from) {
35 scope 5 (inlined <Result<i32, i32> as Try>::branch) {
40 let mut _12: std::result::Result<std::convert::Infallible, i32>;
54 _9 = discriminant(_1);
55 switchInt(move _9) -> [0: bb6, 1: bb5, otherwise: bb3];
62 _5 = discriminant(_3);
63 switchInt(move _5) -> [0: bb2, 1: bb4, otherwise: bb3];
67 _8 = ((_3 as Continue).0: i32);
68 _0 = Result::<i32, i32>::Ok(_8);
78 _6 = ((_3 as Break).0: std::result::Result<std::convert::Infallible, i32>);
79 _13 = ((_6 as Err).0: i32);
80 _0 = Result::<i32, i32>::Err(move _13);
86 _11 = ((_1 as Err).0: i32);
88 _12 = Result::<Infallible, i32>::Err(move _11);
89 _3 = ControlFlow::<Result<Infallible, i32>, i32>::Break(move _12);
95 _10 = ((_1 as Ok).0: i32);
96 _3 = ControlFlow::<Result<Infallible, i32>, i32>::Continue(move _10);