aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/hir_def/src/nameres/collector.rs4
-rw-r--r--crates/hir_def/src/nameres/tests.rs15
2 files changed, 19 insertions, 0 deletions
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<'_> {
481 let res = self.def_map.resolve_name_in_extern_prelude(self.db, &extern_crate.name); 481 let res = self.def_map.resolve_name_in_extern_prelude(self.db, &extern_crate.name);
482 482
483 if let Some(ModuleDefId::ModuleId(m)) = res.take_types() { 483 if let Some(ModuleDefId::ModuleId(m)) = res.take_types() {
484 if m == self.def_map.module_id(current_module_id) {
485 return;
486 }
487
484 cov_mark::hit!(macro_rules_from_other_crates_are_visible_with_macro_use); 488 cov_mark::hit!(macro_rules_from_other_crates_are_visible_with_macro_use);
485 self.import_all_macros_exported(current_module_id, m.krate); 489 self.import_all_macros_exported(current_module_id, m.krate);
486 } 490 }
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
@@ -411,6 +411,21 @@ struct Arc;
411} 411}
412 412
413#[test] 413#[test]
414fn extern_crate_self() {
415 check(
416 r#"
417//- /main.rs crate:main
418#[macro_use]
419extern crate self as bla;
420"#,
421 expect![[r#"
422 crate
423 bla: t
424 "#]],
425 );
426}
427
428#[test]
414fn reexport_across_crates() { 429fn reexport_across_crates() {
415 check( 430 check(
416 r#" 431 r#"