| #![no_std] | |
| use core::future::Future; | |
| pub struct NeedsDrop; | |
| impl Drop for NeedsDrop { | |
| fn drop(&mut self) {} | |
| } | |
| #[panic_handler] | |
| fn handler(_: &core::panic::PanicInfo<'_>) -> ! { | |
| loop {} | |
| } | |
| pub unsafe fn oops(x: *const u32) -> u32 { | |
| *x | |
| } | |
| pub async fn foo(_: NeedsDrop) { | |
| async fn bar() {} | |
| bar().await; | |
| } | |
| pub fn poll_foo(x: &mut core::task::Context<'_>) { | |
| let _g = NeedsDrop; | |
| let mut p = core::pin::pin!(foo(NeedsDrop)); | |
| let _ = p.as_mut().poll(x); | |
| let _ = p.as_mut().poll(x); | |
| } | |
| pub fn drop_foo() { | |
| drop(foo(NeedsDrop)); | |
| } |