| //@ edition:2018 | 
 | // #70935: Check if we do not emit snippet | 
 | // with newlines which lead complex diagnostics. | 
 |  | 
 | use std::future::Future; | 
 | use std::marker::PhantomData; | 
 |  | 
 | #[derive(Clone)] | 
 | struct NotSync(PhantomData<*mut ()>); | 
 | unsafe impl Send for NotSync {} | 
 |  | 
 | async fn baz<T>(_c: impl FnMut() -> T) where T: Future<Output=()> { | 
 | } | 
 |  | 
 | fn foo(x: NotSync) -> impl Future + Send { | 
 |     //~^ ERROR `*mut ()` cannot be shared between threads safely | 
 |     async move { | 
 |     //~^ ERROR `*mut ()` cannot be shared between threads safely | 
 |         baz(|| async { | 
 |             foo(x.clone()); | 
 |         }).await; | 
 |     } | 
 | } | 
 |  | 
 | fn bar(_s: impl Future + Send) { | 
 | } | 
 |  | 
 | fn main() { | 
 |     let x = NotSync(PhantomData); | 
 |     bar(foo(x)); | 
 | } |