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