summaryrefslogtreecommitdiffstats
path: root/tests/ui/async-await/issue-70935-complex-spans.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/ui/async-await/issue-70935-complex-spans.rs17
1 files changed, 11 insertions, 6 deletions
diff --git a/tests/ui/async-await/issue-70935-complex-spans.rs b/tests/ui/async-await/issue-70935-complex-spans.rs
index 78625bd39..9ebde1d39 100644
--- a/tests/ui/async-await/issue-70935-complex-spans.rs
+++ b/tests/ui/async-await/issue-70935-complex-spans.rs
@@ -6,16 +6,21 @@
// 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(tx: std::sync::mpsc::Sender<i32>) -> impl Future + Send {
+fn foo(x: NotSync) -> impl Future + Send {
//[no_drop_tracking]~^ ERROR future cannot be sent between threads safely
- //[drop_tracking,drop_tracking_mir]~^^ ERROR `Sender<i32>` cannot be shared between threads
+ //[drop_tracking,drop_tracking_mir]~^^ ERROR `*mut ()` cannot be shared between threads
async move {
- baz(|| async{
- foo(tx.clone());
+ baz(|| async {
+ foo(x.clone());
}).await;
}
}
@@ -24,6 +29,6 @@ fn bar(_s: impl Future + Send) {
}
fn main() {
- let (tx, _rx) = std::sync::mpsc::channel();
- bar(foo(tx));
+ let x = NotSync(PhantomData);
+ bar(foo(x));
}