diff options
Diffstat (limited to 'crates/ra_hir/src/module_tree.rs')
-rw-r--r-- | crates/ra_hir/src/module_tree.rs | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/crates/ra_hir/src/module_tree.rs b/crates/ra_hir/src/module_tree.rs index 1f327eeb2..a1aa3d8ce 100644 --- a/crates/ra_hir/src/module_tree.rs +++ b/crates/ra_hir/src/module_tree.rs | |||
@@ -13,13 +13,14 @@ use test_utils::tested_by; | |||
13 | 13 | ||
14 | use crate::{ | 14 | use crate::{ |
15 | Name, AsName, HirDatabase, SourceItemId, HirFileId, Problem, SourceFileItems, ModuleSource, | 15 | Name, AsName, HirDatabase, SourceItemId, HirFileId, Problem, SourceFileItems, ModuleSource, |
16 | PersistentHirDatabase, | ||
16 | Crate, | 17 | Crate, |
17 | ids::SourceFileItemId, | 18 | ids::SourceFileItemId, |
18 | }; | 19 | }; |
19 | 20 | ||
20 | impl ModuleSource { | 21 | impl ModuleSource { |
21 | pub(crate) fn new( | 22 | pub(crate) fn new( |
22 | db: &impl HirDatabase, | 23 | db: &impl PersistentHirDatabase, |
23 | file_id: HirFileId, | 24 | file_id: HirFileId, |
24 | decl_id: Option<SourceFileItemId>, | 25 | decl_id: Option<SourceFileItemId>, |
25 | ) -> ModuleSource { | 26 | ) -> ModuleSource { |
@@ -47,7 +48,7 @@ pub struct Submodule { | |||
47 | 48 | ||
48 | impl Submodule { | 49 | impl Submodule { |
49 | pub(crate) fn submodules_query( | 50 | pub(crate) fn submodules_query( |
50 | db: &impl HirDatabase, | 51 | db: &impl PersistentHirDatabase, |
51 | file_id: HirFileId, | 52 | file_id: HirFileId, |
52 | decl_id: Option<SourceFileItemId>, | 53 | decl_id: Option<SourceFileItemId>, |
53 | ) -> Arc<Vec<Submodule>> { | 54 | ) -> Arc<Vec<Submodule>> { |
@@ -133,7 +134,10 @@ struct LinkData { | |||
133 | } | 134 | } |
134 | 135 | ||
135 | impl ModuleTree { | 136 | impl ModuleTree { |
136 | pub(crate) fn module_tree_query(db: &impl HirDatabase, krate: Crate) -> Arc<ModuleTree> { | 137 | pub(crate) fn module_tree_query( |
138 | db: &impl PersistentHirDatabase, | ||
139 | krate: Crate, | ||
140 | ) -> Arc<ModuleTree> { | ||
137 | db.check_canceled(); | 141 | db.check_canceled(); |
138 | let mut res = ModuleTree::default(); | 142 | let mut res = ModuleTree::default(); |
139 | res.init_crate(db, krate); | 143 | res.init_crate(db, krate); |
@@ -156,7 +160,7 @@ impl ModuleTree { | |||
156 | Some(res) | 160 | Some(res) |
157 | } | 161 | } |
158 | 162 | ||
159 | fn init_crate(&mut self, db: &impl HirDatabase, krate: Crate) { | 163 | fn init_crate(&mut self, db: &impl PersistentHirDatabase, krate: Crate) { |
160 | let crate_graph = db.crate_graph(); | 164 | let crate_graph = db.crate_graph(); |
161 | let file_id = crate_graph.crate_root(krate.crate_id); | 165 | let file_id = crate_graph.crate_root(krate.crate_id); |
162 | let source_root_id = db.file_source_root(file_id); | 166 | let source_root_id = db.file_source_root(file_id); |
@@ -167,7 +171,7 @@ impl ModuleTree { | |||
167 | 171 | ||
168 | fn init_subtree( | 172 | fn init_subtree( |
169 | &mut self, | 173 | &mut self, |
170 | db: &impl HirDatabase, | 174 | db: &impl PersistentHirDatabase, |
171 | source_root: &SourceRoot, | 175 | source_root: &SourceRoot, |
172 | parent: Option<LinkId>, | 176 | parent: Option<LinkId>, |
173 | file_id: HirFileId, | 177 | file_id: HirFileId, |
@@ -287,14 +291,18 @@ impl LinkId { | |||
287 | pub(crate) fn name(self, tree: &ModuleTree) -> &Name { | 291 | pub(crate) fn name(self, tree: &ModuleTree) -> &Name { |
288 | &tree.links[self].name | 292 | &tree.links[self].name |
289 | } | 293 | } |
290 | pub(crate) fn source(self, tree: &ModuleTree, db: &impl HirDatabase) -> TreeArc<ast::Module> { | 294 | pub(crate) fn source( |
295 | self, | ||
296 | tree: &ModuleTree, | ||
297 | db: &impl PersistentHirDatabase, | ||
298 | ) -> TreeArc<ast::Module> { | ||
291 | let syntax_node = db.file_item(tree.links[self].source); | 299 | let syntax_node = db.file_item(tree.links[self].source); |
292 | ast::Module::cast(&syntax_node).unwrap().to_owned() | 300 | ast::Module::cast(&syntax_node).unwrap().to_owned() |
293 | } | 301 | } |
294 | } | 302 | } |
295 | 303 | ||
296 | fn resolve_submodule( | 304 | fn resolve_submodule( |
297 | db: &impl HirDatabase, | 305 | db: &impl PersistentHirDatabase, |
298 | file_id: HirFileId, | 306 | file_id: HirFileId, |
299 | name: &Name, | 307 | name: &Name, |
300 | is_root: bool, | 308 | is_root: bool, |