- // MIR for `too_complex` before SeparateConstSwitch + // MIR for `too_complex` after SeparateConstSwitch fn too_complex(_1: Result) -> Option { debug x => _1; let mut _0: std::option::Option; let mut _2: std::ops::ControlFlow; let mut _3: isize; let _4: i32; let mut _5: i32; let _6: usize; let mut _7: usize; let mut _8: isize; let _9: i32; let mut _10: i32; let _11: usize; scope 1 { debug v => _4; } scope 2 { debug r => _6; } scope 3 { debug v => _9; } scope 4 { debug r => _11; } bb0: { StorageLive(_2); _3 = discriminant(_1); switchInt(move _3) -> [0: bb3, 1: bb1, otherwise: bb2]; } bb1: { _6 = ((_1 as Err).0: usize); _2 = ControlFlow::::Break(_6); goto -> bb4; } bb2: { unreachable; } bb3: { _4 = ((_1 as Ok).0: i32); _2 = ControlFlow::::Continue(_4); goto -> bb4; } bb4: { _8 = discriminant(_2); switchInt(move _8) -> [0: bb6, 1: bb5, otherwise: bb2]; } bb5: { StorageLive(_11); _11 = ((_2 as Break).0: usize); _0 = Option::::None; StorageDead(_11); goto -> bb7; } bb6: { _9 = ((_2 as Continue).0: i32); _0 = Option::::Some(_9); goto -> bb7; } bb7: { StorageDead(_2); return; } }