diff options
Diffstat (limited to 'crates/ra_hir/src/nameres/collector.rs')
-rw-r--r-- | crates/ra_hir/src/nameres/collector.rs | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs index cbe850ba4..e7afc34c9 100644 --- a/crates/ra_hir/src/nameres/collector.rs +++ b/crates/ra_hir/src/nameres/collector.rs | |||
@@ -213,18 +213,22 @@ where | |||
213 | } | 213 | } |
214 | } | 214 | } |
215 | } else { | 215 | } else { |
216 | let last_segment = import.path.segments.last().unwrap(); | 216 | match import.path.segments.last() { |
217 | let name = import.alias.clone().unwrap_or_else(|| last_segment.name.clone()); | 217 | Some(last_segment) => { |
218 | log::debug!("resolved import {:?} ({:?}) to {:?}", name, import, def); | 218 | let name = import.alias.clone().unwrap_or_else(|| last_segment.name.clone()); |
219 | 219 | log::debug!("resolved import {:?} ({:?}) to {:?}", name, import, def); | |
220 | // extern crates in the crate root are special-cased to insert entries into the extern prelude: rust-lang/rust#54658 | 220 | |
221 | if import.is_extern_crate && module_id == self.def_map.root { | 221 | // extern crates in the crate root are special-cased to insert entries into the extern prelude: rust-lang/rust#54658 |
222 | if let Some(def) = def.take_types() { | 222 | if import.is_extern_crate && module_id == self.def_map.root { |
223 | self.def_map.extern_prelude.insert(name.clone(), def); | 223 | if let Some(def) = def.take_types() { |
224 | self.def_map.extern_prelude.insert(name.clone(), def); | ||
225 | } | ||
226 | } | ||
227 | let resolution = Resolution { def, import: Some(import_id) }; | ||
228 | self.update(module_id, Some(import_id), &[(name, resolution)]); | ||
224 | } | 229 | } |
230 | None => tested_by!(bogus_paths), | ||
225 | } | 231 | } |
226 | let resolution = Resolution { def, import: Some(import_id) }; | ||
227 | self.update(module_id, Some(import_id), &[(name, resolution)]); | ||
228 | } | 232 | } |
229 | } | 233 | } |
230 | 234 | ||