From 4e9b12870c705e72c0e85ae286f1b5738fc2a1d9 Mon Sep 17 00:00:00 2001 From: roife Date: Thu, 23 May 2024 02:39:53 +0800 Subject: [PATCH] fix: check pseudo-block by local_id instead of ModuleOrigin --- .../crates/hir-def/src/nameres/path_resolution.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/tools/rust-analyzer/crates/hir-def/src/nameres/path_resolution.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/path_resolution.rs index 7776cb706824..d621f3a360a9 100644 --- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/path_resolution.rs +++ b/src/tools/rust-analyzer/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(); }