Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/semantics.rs')
| -rw-r--r-- | crates/hir/src/semantics.rs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 2e0dbf82b7..80205f7fbc 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs @@ -10,7 +10,10 @@ use hir_def::{ resolver::{self, HasResolver, Resolver, TypeNs}, AsMacroCall, FunctionId, TraitId, VariantId, }; -use hir_expand::{name::AsName, ExpansionInfo, MacroCallId}; +use hir_expand::{ + name::{known, AsName}, + ExpansionInfo, MacroCallId, +}; use hir_ty::Interner; use itertools::Itertools; use rustc_hash::{FxHashMap, FxHashSet}; @@ -910,13 +913,14 @@ impl<'db> SemanticsImpl<'db> { fn resolve_extern_crate(&self, extern_crate: &ast::ExternCrate) -> Option<Crate> { let krate = self.scope(extern_crate.syntax()).krate()?; - krate.dependencies(self.db).into_iter().find_map(|dep| { - if dep.name == extern_crate.name_ref()?.as_name() { - Some(dep.krate) - } else { - None - } - }) + let name = extern_crate.name_ref()?.as_name(); + if name == known::SELF_PARAM { + return Some(krate); + } + krate + .dependencies(self.db) + .into_iter() + .find_map(|dep| (dep.name == name).then(|| dep.krate)) } fn resolve_variant(&self, record_lit: ast::RecordExpr) -> Option<VariantId> { |