//@ run-pass //! This test used to ICE: rust-lang/rust#132103 //! Fixed when re-work async drop to shim drop glue coroutine scheme. //@ compile-flags: -Zvalidate-mir -Zinline-mir=yes //@ edition: 2018 #![feature(async_drop)] #![allow(incomplete_features)] use core::future::{async_drop_in_place, Future}; use core::mem::{self}; use core::pin::pin; use core::task::{Context, Waker}; async fn test_async_drop(x: T) { let mut x = mem::MaybeUninit::new(x); pin!(unsafe { async_drop_in_place(x.as_mut_ptr()) }); } fn main() { let waker = Waker::noop(); let mut cx = Context::from_waker(&waker); let fut = pin!(async { test_async_drop(test_async_drop(0)).await; }); let _ = fut.poll(&mut cx); }