Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ra-salsa/tests/storage_varieties/queries.rs')
-rw-r--r--crates/ra-salsa/tests/storage_varieties/queries.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/crates/ra-salsa/tests/storage_varieties/queries.rs b/crates/ra-salsa/tests/storage_varieties/queries.rs
new file mode 100644
index 0000000000..bc9b10ae7b
--- /dev/null
+++ b/crates/ra-salsa/tests/storage_varieties/queries.rs
@@ -0,0 +1,22 @@
+pub(crate) trait Counter: ra_salsa::Database {
+ fn increment(&self) -> usize;
+}
+
+#[ra_salsa::query_group(GroupStruct)]
+pub(crate) trait Database: Counter {
+ fn memoized(&self) -> usize;
+ fn volatile(&self) -> usize;
+}
+
+/// Because this query is memoized, we only increment the counter
+/// the first time it is invoked.
+fn memoized(db: &dyn Database) -> usize {
+ db.volatile()
+}
+
+/// Because this query is volatile, each time it is invoked,
+/// we will increment the counter.
+fn volatile(db: &dyn Database) -> usize {
+ db.salsa_runtime().report_untracked_read();
+ db.increment()
+}