From 9bb11aee44f377fdf2ce7bed5c09ccbcf30f9b57 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 21 Nov 2018 00:31:12 +0300 Subject: populate resolve from unresolved imports --- crates/ra_analysis/src/descriptors/module/mod.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'crates/ra_analysis/src/descriptors/module/mod.rs') diff --git a/crates/ra_analysis/src/descriptors/module/mod.rs b/crates/ra_analysis/src/descriptors/module/mod.rs index f49e7f909..2d0bfa64c 100644 --- a/crates/ra_analysis/src/descriptors/module/mod.rs +++ b/crates/ra_analysis/src/descriptors/module/mod.rs @@ -103,9 +103,11 @@ impl ModuleDescriptor { /// The root of the tree this module is part of pub fn crate_root(&self) -> ModuleDescriptor { - generate(Some(self.clone()), |it| it.parent()) - .last() - .unwrap() + let root_id = self.module_id.crate_root(&self.tree); + ModuleDescriptor { + module_id: root_id, + ..self.clone() + } } /// `name` is `None` for the crate's root module @@ -205,6 +207,11 @@ impl ModuleId { let link = self.parent_link(tree)?; Some(tree.link(link).owner) } + fn crate_root(self, tree: &ModuleTree) -> ModuleId { + generate(Some(self), move |it| it.parent(tree)) + .last() + .unwrap() + } fn child(self, tree: &ModuleTree, name: &str) -> Option { let link = tree .module(self) -- cgit v1.2.3