// build-pass
// compile-flags:-Copt-level=0
// edition:2018

struct S<T>(std::marker::PhantomData<T>);

impl<T> std::ops::Deref for S<T> {
    type Target = T;

    fn deref(&self) -> &Self::Target {
        todo!()
    }
}
impl<T> std::ops::DerefMut for S<T> {
    fn deref_mut(&mut self) -> &mut Self::Target {
        todo!()
    }
}

async fn new() -> S<u64> {
    todo!()
}

async fn crash() {
    *new().await = 1 + 1;
}

fn main() {
    let _ = crash();
}
