From 801725a77b17a0641fcf40a310f491d71b059d80 Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Tue, 14 Jun 2022 14:58:46 +0900 Subject: suggest adding a `#[macro_export]` to a private macro --- src/test/ui/privacy/macro-private-reexport.rs | 11 +++++++++++ src/test/ui/privacy/macro-private-reexport.stderr | 17 +++++++++++++++++ src/test/ui/rust-2018/uniform-paths/macro-rules.stderr | 8 ++++---- 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 src/test/ui/privacy/macro-private-reexport.rs create mode 100644 src/test/ui/privacy/macro-private-reexport.stderr (limited to 'src') diff --git a/src/test/ui/privacy/macro-private-reexport.rs b/src/test/ui/privacy/macro-private-reexport.rs new file mode 100644 index 00000000000..5b53a861d25 --- /dev/null +++ b/src/test/ui/privacy/macro-private-reexport.rs @@ -0,0 +1,11 @@ +// edition:2018 + +mod foo { + macro_rules! bar { + () => {}; + } + + pub use bar as _; //~ ERROR `bar` is only public within the crate, and cannot be re-exported outside +} + +fn main() {} diff --git a/src/test/ui/privacy/macro-private-reexport.stderr b/src/test/ui/privacy/macro-private-reexport.stderr new file mode 100644 index 00000000000..af85cbcf3f2 --- /dev/null +++ b/src/test/ui/privacy/macro-private-reexport.stderr @@ -0,0 +1,17 @@ +error[E0364]: `bar` is only public within the crate, and cannot be re-exported outside + --> $DIR/macro-private-reexport.rs:8:13 + | +LL | pub use bar as _; + | ^^^^^^^^ + | +help: consider adding a `#[macro_export]` to the macro in the imported module + --> $DIR/macro-private-reexport.rs:4:5 + | +LL | / macro_rules! bar { +LL | | () => {}; +LL | | } + | |_____^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0364`. diff --git a/src/test/ui/rust-2018/uniform-paths/macro-rules.stderr b/src/test/ui/rust-2018/uniform-paths/macro-rules.stderr index 9e48e26b1df..9f8c928c32c 100644 --- a/src/test/ui/rust-2018/uniform-paths/macro-rules.stderr +++ b/src/test/ui/rust-2018/uniform-paths/macro-rules.stderr @@ -4,11 +4,11 @@ error[E0364]: `legacy_macro` is only public within the crate, and cannot be re-e LL | pub use legacy_macro as _; | ^^^^^^^^^^^^^^^^^ | -note: consider marking `legacy_macro` as `pub` in the imported module - --> $DIR/macro-rules.rs:11:13 +help: consider adding a `#[macro_export]` to the macro in the imported module + --> $DIR/macro-rules.rs:7:5 | -LL | pub use legacy_macro as _; - | ^^^^^^^^^^^^^^^^^ +LL | macro_rules! legacy_macro { () => () } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0659]: `legacy_macro` is ambiguous --> $DIR/macro-rules.rs:31:13 -- cgit 1.4.1-3-g733a5 From 60a50d02abfa3552c825b8d7690cf73343195499 Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Tue, 14 Jun 2022 15:46:11 +0900 Subject: change edition to 2021 --- src/test/ui/privacy/macro-private-reexport.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/test/ui/privacy/macro-private-reexport.rs b/src/test/ui/privacy/macro-private-reexport.rs index 5b53a861d25..bc3e6fb5c59 100644 --- a/src/test/ui/privacy/macro-private-reexport.rs +++ b/src/test/ui/privacy/macro-private-reexport.rs @@ -1,4 +1,4 @@ -// edition:2018 +// edition:2021 mod foo { macro_rules! bar { -- cgit 1.4.1-3-g733a5 From d29915af79f4a372647b67e7d83f1fc4aabbb92a Mon Sep 17 00:00:00 2001 From: Takayuki Maeda Date: Wed, 15 Jun 2022 00:42:10 +0900 Subject: add a test case for `decl_macro` --- src/test/ui/privacy/macro-private-reexport.rs | 6 ++++++ src/test/ui/privacy/macro-private-reexport.stderr | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/test/ui/privacy/macro-private-reexport.rs b/src/test/ui/privacy/macro-private-reexport.rs index bc3e6fb5c59..d0aab528ed4 100644 --- a/src/test/ui/privacy/macro-private-reexport.rs +++ b/src/test/ui/privacy/macro-private-reexport.rs @@ -1,11 +1,17 @@ // edition:2021 +#![feature(decl_macro)] + mod foo { macro_rules! bar { () => {}; } pub use bar as _; //~ ERROR `bar` is only public within the crate, and cannot be re-exported outside + + macro baz() {} + + pub use baz as _; //~ ERROR `baz` is private, and cannot be re-exported } fn main() {} diff --git a/src/test/ui/privacy/macro-private-reexport.stderr b/src/test/ui/privacy/macro-private-reexport.stderr index af85cbcf3f2..b8768f3612e 100644 --- a/src/test/ui/privacy/macro-private-reexport.stderr +++ b/src/test/ui/privacy/macro-private-reexport.stderr @@ -1,17 +1,29 @@ error[E0364]: `bar` is only public within the crate, and cannot be re-exported outside - --> $DIR/macro-private-reexport.rs:8:13 + --> $DIR/macro-private-reexport.rs:10:13 | LL | pub use bar as _; | ^^^^^^^^ | help: consider adding a `#[macro_export]` to the macro in the imported module - --> $DIR/macro-private-reexport.rs:4:5 + --> $DIR/macro-private-reexport.rs:6:5 | LL | / macro_rules! bar { LL | | () => {}; LL | | } | |_____^ -error: aborting due to previous error +error[E0364]: `baz` is private, and cannot be re-exported + --> $DIR/macro-private-reexport.rs:14:13 + | +LL | pub use baz as _; + | ^^^^^^^^ + | +note: consider marking `baz` as `pub` in the imported module + --> $DIR/macro-private-reexport.rs:14:13 + | +LL | pub use baz as _; + | ^^^^^^^^ + +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0364`. -- cgit 1.4.1-3-g733a5