Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/base-db/src/change.rs')
-rw-r--r--crates/base-db/src/change.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/crates/base-db/src/change.rs b/crates/base-db/src/change.rs
index 7e40f5408f..90413a573a 100644
--- a/crates/base-db/src/change.rs
+++ b/crates/base-db/src/change.rs
@@ -3,15 +3,12 @@
use std::fmt;
-use ra_salsa::Durability;
use rustc_hash::FxHashMap;
+use salsa::Durability;
use triomphe::Arc;
use vfs::FileId;
-use crate::{
- CrateGraph, CrateId, CrateWorkspaceData, SourceDatabaseFileInputExt, SourceRoot,
- SourceRootDatabase, SourceRootId,
-};
+use crate::{CrateGraph, CrateId, CrateWorkspaceData, RootQueryDb, SourceRoot, SourceRootId};
/// Encapsulate a bunch of raw `.set` calls on the database.
#[derive(Default)]
@@ -59,7 +56,7 @@ impl FileChange {
self.ws_data = Some(data);
}
- pub fn apply(self, db: &mut dyn SourceRootDatabase) {
+ pub fn apply(self, db: &mut dyn RootQueryDb) {
let _p = tracing::info_span!("FileChange::apply").entered();
if let Some(roots) = self.roots {
for (idx, root) in roots.into_iter().enumerate() {
@@ -68,14 +65,16 @@ impl FileChange {
for file_id in root.iter() {
db.set_file_source_root_with_durability(file_id, root_id, durability);
}
+
db.set_source_root_with_durability(root_id, Arc::new(root), durability);
}
}
for (file_id, text) in self.files_changed {
let source_root_id = db.file_source_root(file_id);
- let source_root = db.source_root(source_root_id);
- let durability = durability(&source_root);
+ let source_root = db.source_root(source_root_id.source_root_id(db));
+
+ let durability = durability(&source_root.source_root(db));
// XXX: can't actually remove the file, just reset the text
let text = text.unwrap_or_default();
db.set_file_text_with_durability(file_id, &text, durability)