Unnamed repository; edit this file 'description' to name the repository.
fix: check pseudo-block by local_id instead of ModuleOrigin
roife 2024-05-23
parent 48dc20f · commit d9cc159
-rw-r--r--crates/hir-def/src/nameres/path_resolution.rs8
1 files changed, 3 insertions, 5 deletions
diff --git a/crates/hir-def/src/nameres/path_resolution.rs b/crates/hir-def/src/nameres/path_resolution.rs
index 7776cb7068..d621f3a360 100644
--- a/crates/hir-def/src/nameres/path_resolution.rs
+++ b/crates/hir-def/src/nameres/path_resolution.rs
@@ -18,9 +18,7 @@ use crate::{
db::DefDatabase,
item_scope::{ImportOrExternCrate, BUILTIN_SCOPE},
item_tree::Fields,
- nameres::{
- sub_namespace_match, BlockInfo, BuiltinShadowMode, DefMap, MacroSubNs, ModuleOrigin,
- },
+ nameres::{sub_namespace_match, BlockInfo, BuiltinShadowMode, DefMap, MacroSubNs},
path::{ModPath, PathKind},
per_ns::PerNs,
visibility::{RawVisibility, Visibility},
@@ -472,7 +470,7 @@ impl DefMap {
};
let extern_prelude = || {
- if matches!(self[module].origin, ModuleOrigin::BlockExpr { .. }) {
+ if self.block.is_some() && module == DefMap::ROOT {
// Don't resolve extern prelude in pseudo-modules of blocks, because
// they might been shadowed by local names.
return PerNs::none();
@@ -518,7 +516,7 @@ impl DefMap {
None => self[Self::ROOT].scope.get(name),
};
let from_extern_prelude = || {
- if matches!(self[module].origin, ModuleOrigin::BlockExpr { .. }) {
+ if self.block.is_some() && module == DefMap::ROOT {
// Don't resolve extern prelude in pseudo-module of a block.
return PerNs::none();
}