|
| 1 | +// WARNING: This is highly experimental output it's intended for stable-mir developers only. |
| 2 | +// If you find a bug or want to improve the output open a issue at https://github.com/rust-lang/project-stable-mir. |
| 3 | +fn foo() -> () { |
| 4 | + let mut _0: (); |
| 5 | + let _1: i32; |
| 6 | + let _2: {async closure@$DIR/async-closure.rs:9:13: 9:21}; |
| 7 | + let mut _3: &i32; |
| 8 | + debug y => _1; |
| 9 | + debug x => _2; |
| 10 | + bb0: { |
| 11 | + _1 = 0_i32; |
| 12 | + _3 = &_1; |
| 13 | + _2 = {coroutine-closure@$DIR/async-closure.rs:9:13: 9:21}(move _3); |
| 14 | + return; |
| 15 | + } |
| 16 | +} |
| 17 | +fn foo::{closure#0}(_1: &{async closure@$DIR/async-closure.rs:9:13: 9:21}) -> {async closure body@$DIR/async-closure.rs:9:22: 11:6} { |
| 18 | + let mut _0: {async closure body@$DIR/async-closure.rs:9:22: 11:6}; |
| 19 | + let mut _2: &i32; |
| 20 | + debug y => (*((*_1).0: &i32)); |
| 21 | + bb0: { |
| 22 | + _2 = CopyForDeref(((*_1).0: &i32)); |
| 23 | + _0 = {coroutine@$DIR/async-closure.rs:9:22: 11:6}(_2); |
| 24 | + return; |
| 25 | + } |
| 26 | +} |
| 27 | +fn foo::{closure#0}::{closure#0}(_1: Pin<&mut {async closure body@$DIR/async-closure.rs:9:22: 11:6}>, _2: &mut Context<'_>) -> Poll<()> { |
| 28 | + let mut _0: Poll<()>; |
| 29 | + let _3: i32; |
| 30 | + let mut _4: &i32; |
| 31 | + let mut _5: u32; |
| 32 | + let mut _6: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6}; |
| 33 | + let mut _7: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6}; |
| 34 | + let mut _8: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6}; |
| 35 | + debug _task_context => _2; |
| 36 | + debug y => (*((*(_1.0: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6})).0: &i32)); |
| 37 | + debug y => _3; |
| 38 | + bb0: { |
| 39 | + _6 = CopyForDeref((_1.0: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6})); |
| 40 | + _5 = discriminant((*_6)); |
| 41 | + switchInt(move _5) -> [0: bb1, 1: bb2, otherwise: bb3]; |
| 42 | + } |
| 43 | + bb1: { |
| 44 | + _7 = CopyForDeref((_1.0: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6})); |
| 45 | + _4 = CopyForDeref(((*_7).0: &i32)); |
| 46 | + _3 = (*_4); |
| 47 | + _0 = std::task::Poll::Ready(()); |
| 48 | + _8 = CopyForDeref((_1.0: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6})); |
| 49 | + discriminant((*_8) = 1; |
| 50 | + return; |
| 51 | + } |
| 52 | + bb2: { |
| 53 | + assert(false, `async fn` resumed after completion) -> [success: bb2, unwind unreachable]; |
| 54 | + } |
| 55 | + bb3: { |
| 56 | + unreachable; |
| 57 | + } |
| 58 | +} |
| 59 | +fn foo::{closure#0}::{closure#1}(_1: Pin<&mut {async closure body@$DIR/async-closure.rs:9:22: 11:6}>, _2: &mut Context<'_>) -> Poll<()> { |
| 60 | + let mut _0: Poll<()>; |
| 61 | + let _3: i32; |
| 62 | + let mut _4: &i32; |
| 63 | + let mut _5: u32; |
| 64 | + let mut _6: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6}; |
| 65 | + let mut _7: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6}; |
| 66 | + let mut _8: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6}; |
| 67 | + debug _task_context => _2; |
| 68 | + debug y => (*((*(_1.0: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6})).0: &i32)); |
| 69 | + debug y => _3; |
| 70 | + bb0: { |
| 71 | + _6 = CopyForDeref((_1.0: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6})); |
| 72 | + _5 = discriminant((*_6)); |
| 73 | + switchInt(move _5) -> [0: bb1, 1: bb2, otherwise: bb3]; |
| 74 | + } |
| 75 | + bb1: { |
| 76 | + _7 = CopyForDeref((_1.0: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6})); |
| 77 | + _4 = CopyForDeref(((*_7).0: &i32)); |
| 78 | + _3 = (*_4); |
| 79 | + _0 = std::task::Poll::Ready(()); |
| 80 | + _8 = CopyForDeref((_1.0: &mut {async closure body@$DIR/async-closure.rs:9:22: 11:6})); |
| 81 | + discriminant((*_8) = 1; |
| 82 | + return; |
| 83 | + } |
| 84 | + bb2: { |
| 85 | + assert(false, `async fn` resumed after completion) -> [success: bb2, unwind unreachable]; |
| 86 | + } |
| 87 | + bb3: { |
| 88 | + unreachable; |
| 89 | + } |
| 90 | +} |
0 commit comments