// MIR for `test_complex` after built fn test_complex() -> () { let mut _0: (); let _1: (); let mut _2: E; let mut _3: isize; let mut _4: bool; let mut _5: bool; let mut _6: u8; let mut _7: Droppy; let mut _8: bool; let mut _9: u8; let mut _10: Droppy; let mut _11: bool; let mut _12: E; let mut _13: isize; bb0: { StorageLive(_1); StorageLive(_2); _2 = E::f() -> [return: bb1, unwind: bb37]; } bb1: { PlaceMention(_2); _3 = discriminant(_2); switchInt(move _3) -> [0: bb5, otherwise: bb3]; } bb2: { FakeRead(ForMatchedPlace(None), _2); unreachable; } bb3: { goto -> bb22; } bb4: { goto -> bb2; } bb5: { falseEdge -> [real: bb7, imaginary: bb3]; } bb6: { goto -> bb3; } bb7: { StorageLive(_4); _4 = always_true() -> [return: bb8, unwind: bb37]; } bb8: { switchInt(move _4) -> [0: bb10, otherwise: bb9]; } bb9: { StorageLive(_5); StorageLive(_6); StorageLive(_7); _7 = Droppy(const 0_u8); _6 = (_7.0: u8); _5 = Gt(move _6, const 0_u8); switchInt(move _5) -> [0: bb12, otherwise: bb11]; } bb10: { goto -> bb16; } bb11: { drop(_7) -> [return: bb13, unwind: bb37]; } bb12: { goto -> bb14; } bb13: { StorageDead(_7); StorageDead(_6); goto -> bb19; } bb14: { drop(_7) -> [return: bb15, unwind: bb37]; } bb15: { StorageDead(_7); StorageDead(_6); goto -> bb16; } bb16: { StorageLive(_8); StorageLive(_9); StorageLive(_10); _10 = Droppy(const 1_u8); _9 = (_10.0: u8); _8 = Gt(move _9, const 1_u8); switchInt(move _8) -> [0: bb18, otherwise: bb17]; } bb17: { drop(_10) -> [return: bb19, unwind: bb37]; } bb18: { goto -> bb20; } bb19: { StorageDead(_10); StorageDead(_9); _1 = const (); goto -> bb23; } bb20: { drop(_10) -> [return: bb21, unwind: bb37]; } bb21: { StorageDead(_10); StorageDead(_9); goto -> bb22; } bb22: { _1 = const (); goto -> bb23; } bb23: { StorageDead(_8); StorageDead(_5); StorageDead(_4); StorageDead(_2); StorageDead(_1); StorageLive(_11); _11 = always_true() -> [return: bb24, unwind: bb37]; } bb24: { switchInt(move _11) -> [0: bb26, otherwise: bb25]; } bb25: { goto -> bb35; } bb26: { goto -> bb27; } bb27: { StorageLive(_12); _12 = E::f() -> [return: bb28, unwind: bb37]; } bb28: { PlaceMention(_12); _13 = discriminant(_12); switchInt(move _13) -> [1: bb32, otherwise: bb30]; } bb29: { FakeRead(ForMatchedPlace(None), _12); unreachable; } bb30: { goto -> bb35; } bb31: { goto -> bb29; } bb32: { falseEdge -> [real: bb34, imaginary: bb30]; } bb33: { goto -> bb30; } bb34: { _0 = const (); goto -> bb36; } bb35: { _0 = const (); goto -> bb36; } bb36: { StorageDead(_11); StorageDead(_12); return; } bb37 (cleanup): { resume; } }