diff --git a/compiler/rustc_resolve/src/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs index 4e1fda5479c88..11c951072988e 100644 --- a/compiler/rustc_resolve/src/build_reduced_graph.rs +++ b/compiler/rustc_resolve/src/build_reduced_graph.rs @@ -1071,7 +1071,8 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> { let import = macro_use_import(self, span); self.r.potentially_unused_imports.push(import); module.for_each_child(self, |this, ident, ns, binding| { - if ns == MacroNS { + if ns == MacroNS && this.r.is_accessible_from(binding.vis, this.parent_scope.module) + { let imported_binding = this.r.import(binding, import); this.add_macro_use_binding(ident.name, imported_binding, span, allow_shadowing); } diff --git a/tests/ui/extern/auxiliary/issue-80074-macro.rs b/tests/ui/extern/auxiliary/issue-80074-macro.rs index 30e0f19ab8d84..3e912d977159a 100644 --- a/tests/ui/extern/auxiliary/issue-80074-macro.rs +++ b/tests/ui/extern/auxiliary/issue-80074-macro.rs @@ -2,3 +2,5 @@ macro_rules! foo_ { () => {}; } use foo_ as foo; + +macro_rules! bar { () => {}; } diff --git a/tests/ui/extern/issue-80074.rs b/tests/ui/extern/issue-80074.rs index f83027d4abfd2..e002dcf7d7522 100644 --- a/tests/ui/extern/issue-80074.rs +++ b/tests/ui/extern/issue-80074.rs @@ -1,5 +1,4 @@ // edition:2018 -// build-pass // aux-crate:issue_80074=issue-80074-macro.rs #[macro_use] @@ -7,4 +6,7 @@ extern crate issue_80074; fn main() { foo!(); + //~^ ERROR: cannot find macro `foo` in this scope + bar!(); + //~^ ERROR: cannot find macro `bar` in this scope } diff --git a/tests/ui/extern/issue-80074.stderr b/tests/ui/extern/issue-80074.stderr new file mode 100644 index 0000000000000..ae105c51511aa --- /dev/null +++ b/tests/ui/extern/issue-80074.stderr @@ -0,0 +1,14 @@ +error: cannot find macro `bar` in this scope + --> $DIR/issue-80074.rs:10:5 + | +LL | bar!(); + | ^^^ + +error: cannot find macro `foo` in this scope + --> $DIR/issue-80074.rs:8:5 + | +LL | foo!(); + | ^^^ + +error: aborting due to 2 previous errors +