aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def/src/nameres/path_resolution.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_def/src/nameres/path_resolution.rs')
-rw-r--r--crates/hir_def/src/nameres/path_resolution.rs24
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);