8858: Ignore macro import from `extern crate self` r=jonas-schievink a=ivan770

Closes #8834

Co-authored-by: ivan770 <leshenko.ivan770@gmail.com>
This commit is contained in:
bors[bot] 2021-05-17 10:16:05 +00:00 committed by GitHub
commit 6aac6bcc74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View File

@ -481,6 +481,11 @@ 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) {
cov_mark::hit!(ignore_macro_use_extern_crate_self);
return;
}
cov_mark::hit!(macro_rules_from_other_crates_are_visible_with_macro_use);
self.import_all_macros_exported(current_module_id, m.krate);
}

View File

@ -410,6 +410,22 @@ struct Arc;
);
}
#[test]
fn macro_use_extern_crate_self() {
cov_mark::check!(ignore_macro_use_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(