aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/module_tree.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/module_tree.rs')
-rw-r--r--crates/ra_hir/src/module_tree.rs22
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
14use crate::{ 14use 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
20impl ModuleSource { 21impl 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
48impl Submodule { 49impl 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
135impl ModuleTree { 136impl 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
296fn resolve_submodule( 304fn 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,