diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-01-23 04:04:09 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2021-01-23 04:04:09 +0000 |
commit | eab5db20edd9604ba5d489fa8c6430eb7bac6610 (patch) | |
tree | f486df3f2cacfa60f712148e13a08c2e78c641d2 /crates/hir_def/src/nameres/path_resolution.rs | |
parent | f301da3c3d1c73dd9d438cb0736e23430287dba7 (diff) | |
parent | 90d6740e3237e396f437619d115b8595d2242392 (diff) |
Merge #7391
7391: Fix error when using "extern crate self as" r=kazatsuyu a=kazatsuyu
Fix #6957
Co-authored-by: kazatsuyu <[email protected]>
Diffstat (limited to 'crates/hir_def/src/nameres/path_resolution.rs')
-rw-r--r-- | crates/hir_def/src/nameres/path_resolution.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/crates/hir_def/src/nameres/path_resolution.rs b/crates/hir_def/src/nameres/path_resolution.rs index 82528b792..7b5fe24a7 100644 --- a/crates/hir_def/src/nameres/path_resolution.rs +++ b/crates/hir_def/src/nameres/path_resolution.rs | |||
@@ -13,6 +13,7 @@ | |||
13 | use std::iter::successors; | 13 | use std::iter::successors; |
14 | 14 | ||
15 | use base_db::Edition; | 15 | use base_db::Edition; |
16 | use hir_expand::name; | ||
16 | use hir_expand::name::Name; | 17 | use hir_expand::name::Name; |
17 | use test_utils::mark; | 18 | use test_utils::mark; |
18 | 19 | ||
@@ -63,6 +64,13 @@ impl ResolvePathResult { | |||
63 | 64 | ||
64 | impl DefMap { | 65 | impl DefMap { |
65 | 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) { | ||
68 | mark::hit!(extern_crate_self_as); | ||
69 | return PerNs::types( | ||
70 | ModuleId { krate: self.krate, local_id: self.root }.into(), | ||
71 | Visibility::Public, | ||
72 | ); | ||
73 | } | ||
66 | self.extern_prelude | 74 | self.extern_prelude |
67 | .get(name) | 75 | .get(name) |
68 | .map_or(PerNs::none(), |&it| PerNs::types(it, Visibility::Public)) | 76 | .map_or(PerNs::none(), |&it| PerNs::types(it, Visibility::Public)) |