diff options
Diffstat (limited to 'crates/ra_analysis/src/imp.rs')
-rw-r--r-- | crates/ra_analysis/src/imp.rs | 15 |
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 { |