From a79b54ef7323d38b8c02094de32fb45a7c8fff8a Mon Sep 17 00:00:00 2001 From: ivan770 Date: Sun, 16 May 2021 20:05:52 +0200 Subject: Fix #8834 --- crates/hir_def/src/nameres/collector.rs | 4 ++++ crates/hir_def/src/nameres/tests.rs | 15 +++++++++++++++ 2 files changed, 19 insertions(+) (limited to 'crates') diff --git a/crates/hir_def/src/nameres/collector.rs b/crates/hir_def/src/nameres/collector.rs index adfb78c94..cebc2dc40 100644 --- a/crates/hir_def/src/nameres/collector.rs +++ b/crates/hir_def/src/nameres/collector.rs @@ -481,6 +481,10 @@ impl DefCollector<'_> { let res = self.def_map.resolve_name_in_extern_prelude(self.db, &extern_crate.name); if let Some(ModuleDefId::ModuleId(m)) = res.take_types() { + if m == self.def_map.module_id(current_module_id) { + return; + } + cov_mark::hit!(macro_rules_from_other_crates_are_visible_with_macro_use); self.import_all_macros_exported(current_module_id, m.krate); } diff --git a/crates/hir_def/src/nameres/tests.rs b/crates/hir_def/src/nameres/tests.rs index 4f2e7a2f9..91c37a55d 100644 --- a/crates/hir_def/src/nameres/tests.rs +++ b/crates/hir_def/src/nameres/tests.rs @@ -410,6 +410,21 @@ struct Arc; ); } +#[test] +fn extern_crate_self() { + check( + r#" +//- /main.rs crate:main +#[macro_use] +extern crate self as bla; +"#, + expect![[r#" + crate + bla: t + "#]], + ); +} + #[test] fn reexport_across_crates() { check( -- cgit v1.2.3 From 999217374f7be95eddee8c109790c6cfa0ce67e5 Mon Sep 17 00:00:00 2001 From: ivan770 Date: Mon, 17 May 2021 11:37:24 +0200 Subject: Added cov mark --- crates/hir_def/src/nameres/collector.rs | 1 + crates/hir_def/src/nameres/tests.rs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'crates') diff --git a/crates/hir_def/src/nameres/collector.rs b/crates/hir_def/src/nameres/collector.rs index cebc2dc40..19db6cc59 100644 --- a/crates/hir_def/src/nameres/collector.rs +++ b/crates/hir_def/src/nameres/collector.rs @@ -482,6 +482,7 @@ impl DefCollector<'_> { if let Some(ModuleDefId::ModuleId(m)) = res.take_types() { if m == self.def_map.module_id(current_module_id) { + cov_mark::hit!(ignore_macro_use_extern_crate_self); return; } diff --git a/crates/hir_def/src/nameres/tests.rs b/crates/hir_def/src/nameres/tests.rs index 91c37a55d..9f652731d 100644 --- a/crates/hir_def/src/nameres/tests.rs +++ b/crates/hir_def/src/nameres/tests.rs @@ -411,7 +411,8 @@ struct Arc; } #[test] -fn extern_crate_self() { +fn macro_use_extern_crate_self() { + cov_mark::check!(ignore_macro_use_extern_crate_self); check( r#" //- /main.rs crate:main -- cgit v1.2.3