Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/nameres/path_resolution.rs')
-rw-r--r--crates/hir-def/src/nameres/path_resolution.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/crates/hir-def/src/nameres/path_resolution.rs b/crates/hir-def/src/nameres/path_resolution.rs
index d621f3a360..e797d19223 100644
--- a/crates/hir-def/src/nameres/path_resolution.rs
+++ b/crates/hir-def/src/nameres/path_resolution.rs
@@ -283,7 +283,7 @@ impl DefMap {
// If we have a different `DefMap` from `self` (the original `DefMap` we started
// with), resolve the remaining path segments in that `DefMap`.
let path =
- ModPath::from_segments(PathKind::Super(0), path.segments().iter().cloned());
+ ModPath::from_segments(PathKind::SELF, path.segments().iter().cloned());
return def_map.resolve_path_fp_with_macro(
db,
mode,
@@ -333,7 +333,7 @@ impl DefMap {
ModuleDefId::ModuleId(module) => {
if module.krate != self.krate {
let path = ModPath::from_segments(
- PathKind::Super(0),
+ PathKind::SELF,
path.segments()[i..].iter().cloned(),
);
tracing::debug!("resolving {:?} in other crate", path);
@@ -493,7 +493,12 @@ impl DefMap {
)
})
};
- let prelude = || self.resolve_in_prelude(db, name);
+ let prelude = || {
+ if self.block.is_some() && module == DefMap::ROOT {
+ return PerNs::none();
+ }
+ self.resolve_in_prelude(db, name)
+ };
from_legacy_macro
.or(from_scope_or_builtin)