| - // 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 mut _5: (); | |
| let _6: u8; | |
| let mut _7: (); | |
| let _8: (); | |
| + let mut _9: (); | |
| + let mut _10: u32; | |
| + let mut _11: &mut {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13}; | |
| scope 1 { | |
| - debug _d => _3; | |
| + debug _d => (((*_11) as variant#3).0: HasDrop); | |
| } | |
| bb0: { | |
| - StorageLive(_3); | |
| - _3 = HasDrop; | |
| - StorageLive(_4); | |
| - goto -> bb1; | |
| + _11 = copy (_1.0: &mut {coroutine@$DIR/coroutine_tiny.rs:20:5: 20:13}); | |
| + _10 = discriminant((*_11)); | |
| + switchInt(move _10) -> [0: bb6, 3: bb4, otherwise: bb5]; | |
| } | |
| bb1: { | |
| StorageLive(_6); | |
| StorageLive(_7); | |
| _7 = (); | |
| - _6 = yield(move _7) -> [resume: bb2, drop: bb4]; | |
| + _0 = CoroutineState::<(), ()>::Yielded(move _7); | |
| + StorageDead(_4); | |
| + StorageDead(_6); | |
| + StorageDead(_7); | |
| + discriminant((*_11)) = 3; | |
| + return; | |
| } | |
| bb2: { | |
| StorageDead(_7); | |
| StorageDead(_6); | |
| StorageLive(_8); | |
| _8 = callee() -> [return: bb3, unwind unreachable]; | |
| } | |
| bb3: { | |
| StorageDead(_8); | |
| _5 = const (); | |
| goto -> bb1; | |
| } | |
| bb4: { | |
| - StorageDead(_7); | |
| - StorageDead(_6); | |
| - StorageDead(_4); | |
| - drop(_3) -> [return: bb5, unwind unreachable]; | |
| + StorageLive(_4); | |
| + StorageLive(_6); | |
| + StorageLive(_7); | |
| + _6 = move _2; | |
| + goto -> bb2; | |
| } | |
| bb5: { | |
| - StorageDead(_3); | |
| - drop(_1) -> [return: bb6, unwind unreachable]; | |
| + unreachable; | |
| } | |
| bb6: { | |
| - coroutine_drop; | |
| + nop; | |
| + (((*_11) as variant#3).0: HasDrop) = HasDrop; | |
| + StorageLive(_4); | |
| + goto -> bb1; | |
| } | |
| } | |