diff options
Diffstat (limited to 'crates/hir_def/src/nameres/path_resolution.rs')
-rw-r--r-- | crates/hir_def/src/nameres/path_resolution.rs | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/crates/hir_def/src/nameres/path_resolution.rs b/crates/hir_def/src/nameres/path_resolution.rs index 7b5fe24a7..c1eded5f2 100644 --- a/crates/hir_def/src/nameres/path_resolution.rs +++ b/crates/hir_def/src/nameres/path_resolution.rs | |||
@@ -24,7 +24,7 @@ use crate::{ | |||
24 | path::{ModPath, PathKind}, | 24 | path::{ModPath, PathKind}, |
25 | per_ns::PerNs, | 25 | per_ns::PerNs, |
26 | visibility::{RawVisibility, Visibility}, | 26 | visibility::{RawVisibility, Visibility}, |
27 | AdtId, CrateId, EnumVariantId, LocalModuleId, ModuleDefId, ModuleId, | 27 | AdtId, CrateId, EnumVariantId, LocalModuleId, ModuleDefId, |
28 | }; | 28 | }; |
29 | 29 | ||
30 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] | 30 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] |
@@ -66,10 +66,7 @@ impl DefMap { | |||
66 | pub(super) fn resolve_name_in_extern_prelude(&self, name: &Name) -> PerNs { | 66 | pub(super) fn resolve_name_in_extern_prelude(&self, name: &Name) -> PerNs { |
67 | if name == &name!(self) { | 67 | if name == &name!(self) { |
68 | mark::hit!(extern_crate_self_as); | 68 | mark::hit!(extern_crate_self_as); |
69 | return PerNs::types( | 69 | return PerNs::types(self.module_id(self.root).into(), Visibility::Public); |
70 | ModuleId { krate: self.krate, local_id: self.root }.into(), | ||
71 | Visibility::Public, | ||
72 | ); | ||
73 | } | 70 | } |
74 | self.extern_prelude | 71 | self.extern_prelude |
75 | .get(name) | 72 | .get(name) |
@@ -154,21 +151,15 @@ impl DefMap { | |||
154 | PathKind::DollarCrate(krate) => { | 151 | PathKind::DollarCrate(krate) => { |
155 | if krate == self.krate { | 152 | if krate == self.krate { |
156 | mark::hit!(macro_dollar_crate_self); | 153 | mark::hit!(macro_dollar_crate_self); |
157 | PerNs::types( | 154 | PerNs::types(self.module_id(self.root).into(), Visibility::Public) |
158 | ModuleId { krate: self.krate, local_id: self.root }.into(), | ||
159 | Visibility::Public, | ||
160 | ) | ||
161 | } else { | 155 | } else { |
162 | let def_map = db.crate_def_map(krate); | 156 | let def_map = db.crate_def_map(krate); |
163 | let module = ModuleId { krate, local_id: def_map.root }; | 157 | let module = def_map.module_id(def_map.root); |
164 | mark::hit!(macro_dollar_crate_other); | 158 | mark::hit!(macro_dollar_crate_other); |
165 | PerNs::types(module.into(), Visibility::Public) | 159 | PerNs::types(module.into(), Visibility::Public) |
166 | } | 160 | } |
167 | } | 161 | } |
168 | PathKind::Crate => PerNs::types( | 162 | PathKind::Crate => PerNs::types(self.module_id(self.root).into(), Visibility::Public), |
169 | ModuleId { krate: self.krate, local_id: self.root }.into(), | ||
170 | Visibility::Public, | ||
171 | ), | ||
172 | // plain import or absolute path in 2015: crate-relative with | 163 | // plain import or absolute path in 2015: crate-relative with |
173 | // fallback to extern prelude (with the simplification in | 164 | // fallback to extern prelude (with the simplification in |
174 | // rust-lang/rust#57745) | 165 | // rust-lang/rust#57745) |
@@ -205,10 +196,7 @@ impl DefMap { | |||
205 | let m = successors(Some(original_module), |m| self.modules[*m].parent) | 196 | let m = successors(Some(original_module), |m| self.modules[*m].parent) |
206 | .nth(lvl as usize); | 197 | .nth(lvl as usize); |
207 | if let Some(local_id) = m { | 198 | if let Some(local_id) = m { |
208 | PerNs::types( | 199 | PerNs::types(self.module_id(local_id).into(), Visibility::Public) |
209 | ModuleId { krate: self.krate, local_id }.into(), | ||
210 | Visibility::Public, | ||
211 | ) | ||
212 | } else { | 200 | } else { |
213 | log::debug!("super path in root module"); | 201 | log::debug!("super path in root module"); |
214 | return ResolvePathResult::empty(ReachedFixedPoint::Yes); | 202 | return ResolvePathResult::empty(ReachedFixedPoint::Yes); |