summaryrefslogtreecommitdiffstats
path: root/src/test/ui/async-await/async-fn-send-uses-nonsend.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/async-await/async-fn-send-uses-nonsend.rs')
-rw-r--r--src/test/ui/async-await/async-fn-send-uses-nonsend.rs57
1 files changed, 0 insertions, 57 deletions
diff --git a/src/test/ui/async-await/async-fn-send-uses-nonsend.rs b/src/test/ui/async-await/async-fn-send-uses-nonsend.rs
deleted file mode 100644
index 35d9cb155..000000000
--- a/src/test/ui/async-await/async-fn-send-uses-nonsend.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-// build-pass (FIXME(62277): could be check-pass?)
-// edition:2018
-// compile-flags: --crate-type lib
-
-use std::{
- cell::RefCell,
- fmt::Debug,
- rc::Rc,
-};
-
-fn non_sync() -> impl Debug { RefCell::new(()) }
-
-fn non_send() -> impl Debug { Rc::new(()) }
-
-fn take_ref<T>(_: &T) {}
-
-async fn fut() {}
-
-async fn fut_arg<T>(_: T) {}
-
-async fn still_send() {
- fut().await;
- println!("{:?} {:?}", non_send(), non_sync());
- fut().await;
- drop(non_send());
- drop(non_sync());
- fut().await;
- fut_arg(non_sync()).await;
-
- // Note: all temporaries in `if let` and `match` scrutinee
- // are dropped at the *end* of the blocks, so using `non_send()`
- // in either of those positions with an await in the middle will
- // cause a `!Send` future. It might be nice in the future to allow
- // this for `Copy` types, since they can be "dropped" early without
- // affecting the end user.
- if let Some(_) = Some(non_sync()) {
- fut().await;
- }
- match Some(non_sync()) {
- Some(_) => fut().await,
- None => fut().await,
- }
-
- let _ = non_send();
- fut().await;
-
- {
- let _x = non_send();
- }
- fut().await;
-}
-
-fn assert_send(_: impl Send) {}
-
-pub fn pass_assert() {
- assert_send(still_send());
-}