summaryrefslogtreecommitdiffstats
path: root/tests/ui/coroutine/not-send-sync.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
commitef24de24a82fe681581cc130f342363c47c0969a (patch)
tree0d494f7e1a38b95c92426f58fe6eaa877303a86c /tests/ui/coroutine/not-send-sync.rs
parentReleasing progress-linux version 1.74.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-ef24de24a82fe681581cc130f342363c47c0969a.tar.xz
rustc-ef24de24a82fe681581cc130f342363c47c0969a.zip
Merging upstream version 1.75.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/coroutine/not-send-sync.rs')
-rw-r--r--tests/ui/coroutine/not-send-sync.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/ui/coroutine/not-send-sync.rs b/tests/ui/coroutine/not-send-sync.rs
new file mode 100644
index 000000000..dd6182c10
--- /dev/null
+++ b/tests/ui/coroutine/not-send-sync.rs
@@ -0,0 +1,27 @@
+#![feature(coroutines)]
+#![feature(negative_impls)]
+
+struct NotSend;
+struct NotSync;
+
+impl !Send for NotSend {}
+impl !Sync for NotSync {}
+
+fn main() {
+ fn assert_sync<T: Sync>(_: T) {}
+ fn assert_send<T: Send>(_: T) {}
+
+ assert_sync(|| {
+ //~^ ERROR: coroutine cannot be shared between threads safely
+ let a = NotSync;
+ yield;
+ drop(a);
+ });
+
+ assert_send(|| {
+ //~^ ERROR: coroutine cannot be sent between threads safely
+ let a = NotSend;
+ yield;
+ drop(a);
+ });
+}