Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/query-group-macro/tests/logger_db.rs')
-rw-r--r--crates/query-group-macro/tests/logger_db.rs40
1 files changed, 24 insertions, 16 deletions
diff --git a/crates/query-group-macro/tests/logger_db.rs b/crates/query-group-macro/tests/logger_db.rs
index bade0c2cd6..71af63a0d3 100644
--- a/crates/query-group-macro/tests/logger_db.rs
+++ b/crates/query-group-macro/tests/logger_db.rs
@@ -1,33 +1,41 @@
use std::sync::{Arc, Mutex};
#[salsa_macros::db]
-#[derive(Default, Clone)]
+#[derive(Clone)]
pub(crate) struct LoggerDb {
storage: salsa::Storage<Self>,
logger: Logger,
}
+impl Default for LoggerDb {
+ fn default() -> Self {
+ let logger = Logger::default();
+ Self {
+ storage: salsa::Storage::new(Some(Box::new({
+ let logger = logger.clone();
+ move |event| match event.kind {
+ salsa::EventKind::WillExecute { .. }
+ | salsa::EventKind::WillCheckCancellation
+ | salsa::EventKind::DidValidateMemoizedValue { .. }
+ | salsa::EventKind::WillDiscardStaleOutput { .. }
+ | salsa::EventKind::DidDiscard { .. } => {
+ logger.logs.lock().unwrap().push(format!("salsa_event({:?})", event.kind));
+ }
+ _ => {}
+ }
+ }))),
+ logger,
+ }
+ }
+}
+
#[derive(Default, Clone)]
struct Logger {
logs: Arc<Mutex<Vec<String>>>,
}
#[salsa_macros::db]
-impl salsa::Database for LoggerDb {
- fn salsa_event(&self, event: &dyn Fn() -> salsa::Event) {
- let event = event();
- match event.kind {
- salsa::EventKind::WillExecute { .. }
- | salsa::EventKind::WillCheckCancellation
- | salsa::EventKind::DidValidateMemoizedValue { .. }
- | salsa::EventKind::WillDiscardStaleOutput { .. }
- | salsa::EventKind::DidDiscard { .. } => {
- self.push_log(format!("salsa_event({:?})", event.kind));
- }
- _ => {}
- }
- }
-}
+impl salsa::Database for LoggerDb {}
impl LoggerDb {
/// Log an event from inside a tracked function.