Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/salsa/tests/no_send_sync.rs')
-rw-r--r--crates/salsa/tests/no_send_sync.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/crates/salsa/tests/no_send_sync.rs b/crates/salsa/tests/no_send_sync.rs
new file mode 100644
index 0000000000..2a25c437c3
--- /dev/null
+++ b/crates/salsa/tests/no_send_sync.rs
@@ -0,0 +1,31 @@
+use std::rc::Rc;
+
+#[salsa::query_group(NoSendSyncStorage)]
+trait NoSendSyncDatabase: salsa::Database {
+ fn no_send_sync_value(&self, key: bool) -> Rc<bool>;
+ fn no_send_sync_key(&self, key: Rc<bool>) -> bool;
+}
+
+fn no_send_sync_value(_db: &dyn NoSendSyncDatabase, key: bool) -> Rc<bool> {
+ Rc::new(key)
+}
+
+fn no_send_sync_key(_db: &dyn NoSendSyncDatabase, key: Rc<bool>) -> bool {
+ *key
+}
+
+#[salsa::database(NoSendSyncStorage)]
+#[derive(Default)]
+struct DatabaseImpl {
+ storage: salsa::Storage<Self>,
+}
+
+impl salsa::Database for DatabaseImpl {}
+
+#[test]
+fn no_send_sync() {
+ let db = DatabaseImpl::default();
+
+ assert_eq!(db.no_send_sync_value(true), Rc::new(true));
+ assert!(!db.no_send_sync_key(Rc::new(false)));
+}