Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/test_db.rs')
-rw-r--r--crates/hir-def/src/test_db.rs23
1 files changed, 12 insertions, 11 deletions
diff --git a/crates/hir-def/src/test_db.rs b/crates/hir-def/src/test_db.rs
index 6c995ab6c2..e30a5b65a1 100644
--- a/crates/hir-def/src/test_db.rs
+++ b/crates/hir-def/src/test_db.rs
@@ -30,9 +30,18 @@ pub(crate) struct TestDB {
impl Default for TestDB {
fn default() -> Self {
+ let events = <Arc<Mutex<Option<Vec<salsa::Event>>>>>::default();
let mut this = Self {
- storage: Default::default(),
- events: Default::default(),
+ storage: salsa::Storage::new(Some(Box::new({
+ let events = events.clone();
+ move |event| {
+ let mut events = events.lock().unwrap();
+ if let Some(events) = &mut *events {
+ events.push(event);
+ }
+ }
+ }))),
+ events,
files: Default::default(),
crates_map: Default::default(),
};
@@ -45,15 +54,7 @@ impl Default for TestDB {
}
#[salsa_macros::db]
-impl salsa::Database for TestDB {
- fn salsa_event(&self, event: &dyn std::ops::Fn() -> salsa::Event) {
- let mut events = self.events.lock().unwrap();
- if let Some(events) = &mut *events {
- let event = event();
- events.push(event);
- }
- }
-}
+impl salsa::Database for TestDB {}
impl fmt::Debug for TestDB {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {