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, 5 insertions, 17 deletions
diff --git a/crates/ra_hir/src/module_tree.rs b/crates/ra_hir/src/module_tree.rs
index a1aa3d8ce..1f19ee191 100644
--- a/crates/ra_hir/src/module_tree.rs
+++ b/crates/ra_hir/src/module_tree.rs
@@ -153,10 +153,8 @@ impl ModuleTree {
153 file_id: HirFileId, 153 file_id: HirFileId,
154 decl_id: Option<SourceFileItemId>, 154 decl_id: Option<SourceFileItemId>,
155 ) -> Option<ModuleId> { 155 ) -> Option<ModuleId> {
156 let (res, _) = self 156 let (res, _) =
157 .mods 157 self.mods.iter().find(|(_, m)| (m.file_id, m.decl_id) == (file_id, decl_id))?;
158 .iter()
159 .find(|(_, m)| (m.file_id, m.decl_id) == (file_id, decl_id))?;
160 Some(res) 158 Some(res)
161 } 159 }
162 160
@@ -178,18 +176,10 @@ impl ModuleTree {
178 decl_id: Option<SourceFileItemId>, 176 decl_id: Option<SourceFileItemId>,
179 ) -> ModuleId { 177 ) -> ModuleId {
180 let is_root = parent.is_none(); 178 let is_root = parent.is_none();
181 let id = self.alloc_mod(ModuleData { 179 let id = self.alloc_mod(ModuleData { file_id, decl_id, parent, children: Vec::new() });
182 file_id,
183 decl_id,
184 parent,
185 children: Vec::new(),
186 });
187 for sub in db.submodules(file_id, decl_id).iter() { 180 for sub in db.submodules(file_id, decl_id).iter() {
188 let link = self.alloc_link(LinkData { 181 let link = self.alloc_link(LinkData {
189 source: SourceItemId { 182 source: SourceItemId { file_id, item_id: sub.decl_id },
190 file_id,
191 item_id: sub.decl_id,
192 },
193 name: sub.name.clone(), 183 name: sub.name.clone(),
194 owner: id, 184 owner: id,
195 points_to: Vec::new(), 185 points_to: Vec::new(),
@@ -244,9 +234,7 @@ impl ModuleId {
244 Some(tree.links[link].owner) 234 Some(tree.links[link].owner)
245 } 235 }
246 pub(crate) fn crate_root(self, tree: &ModuleTree) -> ModuleId { 236 pub(crate) fn crate_root(self, tree: &ModuleTree) -> ModuleId {
247 generate(Some(self), move |it| it.parent(tree)) 237 generate(Some(self), move |it| it.parent(tree)).last().unwrap()
248 .last()
249 .unwrap()
250 } 238 }
251 pub(crate) fn child(self, tree: &ModuleTree, name: &Name) -> Option<ModuleId> { 239 pub(crate) fn child(self, tree: &ModuleTree, name: &Name) -> Option<ModuleId> {
252 let link = tree.mods[self] 240 let link = tree.mods[self]