From 49f13d3a9bb5bf3ab92c3fbf23ad79cb001b76e0 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 2 Apr 2019 13:26:09 +0300 Subject: fix a panic with glob-import missing a source map --- crates/ra_hir/src/nameres/raw.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'crates/ra_hir/src/nameres/raw.rs') diff --git a/crates/ra_hir/src/nameres/raw.rs b/crates/ra_hir/src/nameres/raw.rs index 0936229ac..35cbe6655 100644 --- a/crates/ra_hir/src/nameres/raw.rs +++ b/crates/ra_hir/src/nameres/raw.rs @@ -31,15 +31,15 @@ pub struct RawItems { #[derive(Debug, Default, PartialEq, Eq)] pub struct ImportSourceMap { - map: ArenaMap>, + map: ArenaMap>, } impl ImportSourceMap { - fn insert(&mut self, import: ImportId, segment: &ast::PathSegment) { - self.map.insert(import, AstPtr::new(segment)) + fn insert(&mut self, import: ImportId, use_tree: &ast::UseTree) { + self.map.insert(import, AstPtr::new(use_tree)) } - pub(crate) fn get(&self, source: &ModuleSource, import: ImportId) -> TreeArc { + pub(crate) fn get(&self, source: &ModuleSource, import: ImportId) -> TreeArc { let file = match source { ModuleSource::SourceFile(file) => &*file, ModuleSource::Module(m) => m.syntax().ancestors().find_map(SourceFile::cast).unwrap(), @@ -256,17 +256,15 @@ impl RawItemsCollector { fn add_use_item(&mut self, current_module: Option, use_item: &ast::UseItem) { let is_prelude = use_item.has_atom_attr("prelude_import"); - Path::expand_use_item(use_item, |path, segment, alias| { + Path::expand_use_item(use_item, |path, use_tree, is_glob, alias| { let import = self.raw_items.imports.alloc(ImportData { path, alias, - is_glob: segment.is_none(), + is_glob, is_prelude, is_extern_crate: false, }); - if let Some(segment) = segment { - self.source_map.insert(import, segment) - } + self.source_map.insert(import, use_tree); self.push_item(current_module, RawItem::Import(import)) }) } -- cgit v1.2.3