aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/imp.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/imp.rs')
-rw-r--r--crates/ra_analysis/src/imp.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs
index 46169d863..9e441ca79 100644
--- a/crates/ra_analysis/src/imp.rs
+++ b/crates/ra_analysis/src/imp.rs
@@ -43,10 +43,19 @@ impl AnalysisHostImpl {
43 pub fn apply_change(&mut self, change: AnalysisChange) { 43 pub fn apply_change(&mut self, change: AnalysisChange) {
44 log::info!("apply_change {:?}", change); 44 log::info!("apply_change {:?}", change);
45 // self.gc_syntax_trees(); 45 // self.gc_syntax_trees();
46 for root_id in change.new_roots { 46 if !change.new_roots.is_empty() {
47 let mut local_roots = Vec::clone(&self.db.local_roots());
48 for (root_id, is_local) in change.new_roots {
49 self.db
50 .query_mut(ra_db::SourceRootQuery)
51 .set(root_id, Default::default());
52 if is_local {
53 local_roots.push(root_id);
54 }
55 }
47 self.db 56 self.db
48 .query_mut(ra_db::SourceRootQuery) 57 .query_mut(ra_db::LocalRootsQuery)
49 .set(root_id, Default::default()); 58 .set((), Arc::new(local_roots));
50 } 59 }
51 60
52 for (root_id, root_change) in change.roots_changed { 61 for (root_id, root_change) in change.roots_changed {