| // Regression test for #69307 | |
| // | |
| // Having a `async { .. foo.await .. }` block appear inside of a `+=` | |
| // expression was causing an ICE due to a failure to save/restore | |
| // state in the AST numbering pass when entering a nested body. | |
| // | |
| //@ check-pass | |
| //@ edition:2018 | |
| fn block_on<F>(_: F) -> usize { | |
| 0 | |
| } | |
| fn main() {} | |
| async fn bar() { | |
| let mut sum = 0; | |
| sum += { | |
| block_on(async { | |
| baz().await; | |
| let mut inner = 1; | |
| inner += block_on(async { | |
| baz().await; | |
| 0 | |
| }) | |
| }) | |
| }; | |
| } | |
| async fn baz() {} |