about summary refs log tree commit diff
path: root/tests/ui/async-await/async-drop/open-drop-error.rs
blob: 1d97eee521094c6b044a1bbc8c8f7aa7abea6594 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//@ compile-flags: -Zmir-enable-passes=+DataflowConstProp
//@ edition: 2021
//@ build-pass
#![feature(async_drop)]
#![allow(incomplete_features)]

use std::mem::ManuallyDrop;
use std::{
    future::async_drop_in_place,
    pin::{pin, Pin},
};
fn main() {
    a(b)
}
fn b() {}
fn a<C>(d: C) {
    let e = pin!(ManuallyDrop::new(d));
    let f = unsafe { Pin::map_unchecked_mut(e, |g| &mut **g) };
    let h = unsafe { async_drop_in_place(f.get_unchecked_mut()) };
    h;
}