diff options
| author | roife <roifewu@gmail.com> | 2024-05-23 02:39:53 +0800 |
|---|---|---|
| committer | roife <roifewu@gmail.com> | 2024-05-23 02:39:53 +0800 |
| commit | 4e9b12870c705e72c0e85ae286f1b5738fc2a1d9 (patch) | |
| tree | 0c9da0bb1b61ff782f1eb2d5edb28af96259458d | |
| parent | 719eee2d822e83dd74da46dfaa759acb9074d3aa (diff) | |
| download | rust-4e9b12870c705e72c0e85ae286f1b5738fc2a1d9.tar.gz rust-4e9b12870c705e72c0e85ae286f1b5738fc2a1d9.zip | |
fix: check pseudo-block by local_id instead of ModuleOrigin
| -rw-r--r-- | src/tools/rust-analyzer/crates/hir-def/src/nameres/path_resolution.rs | 8 |
1 files 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 7776cb70682..d621f3a360a 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(); } |
