| #![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)); |
| } |