// Non-regression test ICE from issue #105809 and duplicates. // build-pass: the ICE is during codegen // compile-flags: --edition 2018 -Zmir-opt-level=1 use std::{future::Future, pin::Pin}; // Create a `T` without affecting analysis like `loop {}`. fn create() -> T { loop {} } async fn trivial_future() {} struct Connection { _h: H, } async fn complex_future(conn: &Connection) { let small_fut = async move { let _ = conn; trivial_future().await; }; let mut tuple = (small_fut,); let (small_fut_again,) = &mut tuple; let _ = small_fut_again; } fn main() { let mut fut = complex_future(&Connection { _h: () }); let mut cx = create(); let future = unsafe { Pin::new_unchecked(&mut fut) }; let _ = future.poll(&mut cx); }