From e52589e3a72ed57d47956d16d90f4b15fc7408f0 Mon Sep 17 00:00:00 2001 From: kazatsuyu Date: Fri, 22 Jan 2021 22:28:45 +0900 Subject: Fix error when using "extern crate self as" --- crates/hir_def/src/nameres/path_resolution.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'crates/hir_def/src/nameres/path_resolution.rs') diff --git a/crates/hir_def/src/nameres/path_resolution.rs b/crates/hir_def/src/nameres/path_resolution.rs index ec90f4e65..a6e0f64fc 100644 --- a/crates/hir_def/src/nameres/path_resolution.rs +++ b/crates/hir_def/src/nameres/path_resolution.rs @@ -14,6 +14,7 @@ use std::iter::successors; use base_db::Edition; use hir_expand::name::Name; +use hir_expand::name; use test_utils::mark; use crate::{ @@ -63,6 +64,11 @@ impl ResolvePathResult { impl DefMap { pub(super) fn resolve_name_in_extern_prelude(&self, name: &Name) -> PerNs { + if name == &name!(self) { + return PerNs::types(ModuleId { krate: self.krate, local_id: self.root }.into(), + Visibility::Public, + ); + } self.extern_prelude .get(name) .map_or(PerNs::none(), |&it| PerNs::types(it, Visibility::Public)) -- cgit v1.2.3