// MIR for `full_tested_match` after built fn full_tested_match() -> () { let mut _0: (); let mut _1: (i32, i32); let mut _2: std::option::Option; let mut _3: isize; let mut _4: &std::option::Option; let _5: i32; let _6: &i32; let mut _7: bool; let mut _8: i32; let _9: i32; let mut _10: i32; scope 1 { } scope 2 { debug x => _5; debug x => _6; } scope 3 { debug y => _9; } bb0: { StorageLive(_1); StorageLive(_2); _2 = Option::::Some(const 42_i32); PlaceMention(_2); _3 = discriminant(_2); switchInt(move _3) -> [0: bb2, 1: bb4, otherwise: bb1]; } bb1: { FakeRead(ForMatchedPlace(None), _2); unreachable; } bb2: { _1 = (const 3_i32, const 3_i32); goto -> bb13; } bb3: { goto -> bb1; } bb4: { falseEdge -> [real: bb7, imaginary: bb5]; } bb5: { falseEdge -> [real: bb12, imaginary: bb2]; } bb6: { goto -> bb1; } bb7: { StorageLive(_6); _6 = &((_2 as Some).0: i32); _4 = &fake _2; StorageLive(_7); _7 = guard() -> [return: bb8, unwind: bb16]; } bb8: { switchInt(move _7) -> [0: bb10, otherwise: bb9]; } bb9: { StorageDead(_7); FakeRead(ForMatchGuard, _4); FakeRead(ForGuardBinding, _6); StorageLive(_5); _5 = ((_2 as Some).0: i32); StorageLive(_8); _8 = _5; _1 = (const 1_i32, move _8); StorageDead(_8); StorageDead(_5); StorageDead(_6); goto -> bb13; } bb10: { goto -> bb11; } bb11: { StorageDead(_7); StorageDead(_6); goto -> bb5; } bb12: { StorageLive(_9); _9 = ((_2 as Some).0: i32); StorageLive(_10); _10 = _9; _1 = (const 2_i32, move _10); StorageDead(_10); StorageDead(_9); goto -> bb13; } bb13: { PlaceMention(_1); StorageDead(_2); StorageDead(_1); _0 = const (); return; } bb14: { FakeRead(ForMatchedPlace(None), _1); unreachable; } bb15: { goto -> bb14; } bb16 (cleanup): { resume; } }