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, 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] |