diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2022-03-06 00:17:40 +0100 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2022-03-06 00:17:40 +0100 |
| commit | d460b7c9d1c64d394c8078259887e027c4e322c1 (patch) | |
| tree | 19fd309be0552a1aaf70c1657a2f7aa89aba2b88 | |
| parent | e5bb661b7a4bae12ad0c63aca5279e008947fc41 (diff) | |
| download | rust-d460b7c9d1c64d394c8078259887e027c4e322c1.tar.gz rust-d460b7c9d1c64d394c8078259887e027c4e322c1.zip | |
Fix extern crate self having self unresolved
| -rw-r--r-- | crates/hir/src/semantics.rs | 20 | ||||
| -rw-r--r-- | crates/ide/src/syntax_highlighting/test_data/highlight_keywords.html | 2 |
2 files changed, 13 insertions, 9 deletions
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 2e0dbf82b77..80205f7fbc4 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> { diff --git a/crates/ide/src/syntax_highlighting/test_data/highlight_keywords.html b/crates/ide/src/syntax_highlighting/test_data/highlight_keywords.html index 7cdeca8e290..ded76d3ca31 100644 --- a/crates/ide/src/syntax_highlighting/test_data/highlight_keywords.html +++ b/crates/ide/src/syntax_highlighting/test_data/highlight_keywords.html @@ -41,7 +41,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd .unresolved_reference { color: #FC5555; text-decoration: wavy underline; } </style> -<pre><code><span class="keyword">extern</span> <span class="keyword">crate</span> <span class="unresolved_reference">self</span><span class="semicolon">;</span> +<pre><code><span class="keyword">extern</span> <span class="keyword">crate</span> <span class="self_keyword crate_root">self</span><span class="semicolon">;</span> <span class="keyword">use</span> <span class="keyword crate_root">crate</span><span class="semicolon">;</span> <span class="keyword">use</span> <span class="self_keyword crate_root">self</span><span class="semicolon">;</span> |
