| - // MIR for `main::{closure#0}` before StateTransform |
| + // MIR for `main::{closure#0}` after StateTransform |
| |
| - fn main::{closure#0}(_1: {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13}, _2: u8) -> ! |
| - yields () |
| - { |
| + fn main::{closure#0}(_1: Pin<&mut {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13}>, _2: u8) -> CoroutineState<(), !> { |
| + coroutine layout { |
| + field _s0: HasDrop; |
| + variant_fields = { |
| + Unresumed(0): [], |
| + Returned (1): [], |
| + Panicked (2): [], |
| + Suspend0 (3): [_s0], |
| + } |
| + storage_conflicts = BitMatrix(1x1) {(_s0, _s0)} |
| + } |
| debug _x => _2; |
| - let mut _0: !; |
| + coroutine debug _d => _s0; |
| + let mut _0: std::ops::CoroutineState<(), !>; |
| let _3: HasDrop; |
| let mut _4: (); |
| let _5: u8; |
| let mut _6: (); |
| let _7: (); |
| + let mut _8: !; |
| + let mut _9: u32; |
| + let mut _10: &mut {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13}; |
| scope 1 { |
| - debug _d => _3; |
| + debug _d => (((*_10) as variant#3).0: HasDrop); |
| } |
| |
| bb0: { |
| - StorageLive(_3); |
| - _3 = HasDrop; |
| - goto -> bb1; |
| + _10 = copy (_1.0: &mut {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13}); |
| + _9 = discriminant((*_10)); |
| + switchInt(move _9) -> [0: bb6, 3: bb4, otherwise: bb5]; |
| } |
| |
| bb1: { |
| StorageLive(_5); |
| StorageLive(_6); |
| _6 = (); |
| - _5 = yield(move _6) -> [resume: bb2, drop: bb4]; |
| + _0 = CoroutineState::<(), !>::Yielded(move _6); |
| + StorageDead(_5); |
| + StorageDead(_6); |
| + discriminant((*_10)) = 3; |
| + return; |
| } |
| |
| bb2: { |
| StorageDead(_6); |
| StorageDead(_5); |
| StorageLive(_7); |
| _7 = callee() -> [return: bb3, unwind unreachable]; |
| } |
| |
| bb3: { |
| StorageDead(_7); |
| _4 = const (); |
| goto -> bb1; |
| } |
| |
| bb4: { |
| - StorageDead(_6); |
| - StorageDead(_5); |
| - drop(_3) -> [return: bb5, unwind unreachable]; |
| + StorageLive(_5); |
| + StorageLive(_6); |
| + _5 = move _2; |
| + goto -> bb2; |
| } |
| |
| bb5: { |
| - StorageDead(_3); |
| - drop(_1) -> [return: bb6, unwind unreachable]; |
| + unreachable; |
| } |
| |
| bb6: { |
| - coroutine_drop; |
| + nop; |
| + (((*_10) as variant#3).0: HasDrop) = HasDrop; |
| + goto -> bb1; |
| } |
| } |
| |