Auto merge of #83713 - spastorino:revert-pub-macro-rules, r=nikomatsakis
Revert "Rollup merge of #82296 - spastorino:pubrules, r=nikomatsakis" This reverts commite2561c58a4, reversing changes made to2982ba50fc. As discussed in #83641 this feature is not complete and in particular doesn't work cross macros and given that this is not going to be included in edition 2021 nobody seems to be trying to fix the underlying problem. When can add this again I guess, whenever somebody has the time to make it work cross crates. r? `@nikomatsakis`
This commit is contained in:
commit
855c2d130f
14 changed files with 37 additions and 182 deletions
16
src/test/ui/did_you_mean/pub-macro-rules.rs
Normal file
16
src/test/ui/did_you_mean/pub-macro-rules.rs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#[macro_use] mod bleh {
|
||||
pub macro_rules! foo { //~ ERROR can't qualify macro_rules invocation
|
||||
($n:ident) => (
|
||||
fn $n () -> i32 {
|
||||
1
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
foo!(meh);
|
||||
|
||||
fn main() {
|
||||
println!("{}", meh());
|
||||
}
|
||||
8
src/test/ui/did_you_mean/pub-macro-rules.stderr
Normal file
8
src/test/ui/did_you_mean/pub-macro-rules.stderr
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
error: can't qualify macro_rules invocation with `pub`
|
||||
--> $DIR/pub-macro-rules.rs:2:5
|
||||
|
|
||||
LL | pub macro_rules! foo {
|
||||
| ^^^ help: try exporting the macro: `#[macro_export]`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
pub macro_rules! m1 { () => {} } //~ ERROR `pub` on `macro_rules` items is unstable
|
||||
|
||||
#[cfg(FALSE)]
|
||||
pub macro_rules! m2 { () => {} } //~ ERROR `pub` on `macro_rules` items is unstable
|
||||
|
||||
pub(crate) macro_rules! m3 { () => {} } //~ ERROR `pub` on `macro_rules` items is unstable
|
||||
|
||||
pub(in self) macro_rules! m4 { () => {} } //~ ERROR `pub` on `macro_rules` items is unstable
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
error[E0658]: `pub` on `macro_rules` items is unstable
|
||||
--> $DIR/feature-gate-pub_macro_rules.rs:1:1
|
||||
|
|
||||
LL | pub macro_rules! m1 { () => {} }
|
||||
| ^^^
|
||||
|
|
||||
= note: see issue #78855 <https://github.com/rust-lang/rust/issues/78855> for more information
|
||||
= help: add `#![feature(pub_macro_rules)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `pub` on `macro_rules` items is unstable
|
||||
--> $DIR/feature-gate-pub_macro_rules.rs:4:1
|
||||
|
|
||||
LL | pub macro_rules! m2 { () => {} }
|
||||
| ^^^
|
||||
|
|
||||
= note: see issue #78855 <https://github.com/rust-lang/rust/issues/78855> for more information
|
||||
= help: add `#![feature(pub_macro_rules)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `pub` on `macro_rules` items is unstable
|
||||
--> $DIR/feature-gate-pub_macro_rules.rs:6:1
|
||||
|
|
||||
LL | pub(crate) macro_rules! m3 { () => {} }
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #78855 <https://github.com/rust-lang/rust/issues/78855> for more information
|
||||
= help: add `#![feature(pub_macro_rules)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `pub` on `macro_rules` items is unstable
|
||||
--> $DIR/feature-gate-pub_macro_rules.rs:8:1
|
||||
|
|
||||
LL | pub(in self) macro_rules! m4 { () => {} }
|
||||
| ^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #78855 <https://github.com/rust-lang/rust/issues/78855> for more information
|
||||
= help: add `#![feature(pub_macro_rules)]` to the crate attributes to enable
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
#![feature(decl_macro)]
|
||||
#![feature(pub_macro_rules)]
|
||||
|
||||
#[macro_export]
|
||||
macro m1() {} //~ ERROR `#[macro_export]` cannot be used on `macro` items
|
||||
|
||||
#[macro_export]
|
||||
pub macro_rules! m2 { () => {} }
|
||||
//~^ ERROR `#[macro_export]` cannot be used on `macro_rules` with `pub`
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
error: `#[macro_export]` cannot be used on `macro` items
|
||||
--> $DIR/macro-export-on-modularized-macros.rs:5:1
|
||||
|
|
||||
LL | macro m1() {}
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: `#[macro_export]` cannot be used on `macro_rules` with `pub`
|
||||
--> $DIR/macro-export-on-modularized-macros.rs:8:1
|
||||
|
|
||||
LL | pub macro_rules! m2 { () => {} }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
#![feature(pub_macro_rules)]
|
||||
|
||||
#[macro_use]
|
||||
mod m {
|
||||
pub macro_rules! mac { () => {} }
|
||||
|
||||
// `pub` `macro_rules` cannot be redefined in the same module.
|
||||
pub macro_rules! mac { () => {} } //~ ERROR the name `mac` is defined multiple times
|
||||
|
||||
pub(self) macro_rules! private_mac { () => {} }
|
||||
}
|
||||
|
||||
const _: () = {
|
||||
pub macro_rules! block_mac { () => {} }
|
||||
};
|
||||
|
||||
mod n {
|
||||
// Scope of `pub` `macro_rules` is not extended by `#[macro_use]`.
|
||||
mac!(); //~ ERROR cannot find macro `mac` in this scope
|
||||
|
||||
// `pub` `macro_rules` doesn't put the macro into the root module, unlike `#[macro_export]`.
|
||||
crate::mac!(); //~ ERROR failed to resolve: maybe a missing crate `mac`
|
||||
crate::block_mac!(); //~ ERROR failed to resolve: maybe a missing crate `block_mac`
|
||||
|
||||
crate::m::private_mac!(); //~ ERROR macro `private_mac` is private
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
error[E0428]: the name `mac` is defined multiple times
|
||||
--> $DIR/pub-macro-rules-fail.rs:8:5
|
||||
|
|
||||
LL | pub macro_rules! mac { () => {} }
|
||||
| -------------------- previous definition of the macro `mac` here
|
||||
...
|
||||
LL | pub macro_rules! mac { () => {} }
|
||||
| ^^^^^^^^^^^^^^^^^^^^ `mac` redefined here
|
||||
|
|
||||
= note: `mac` must be defined only once in the macro namespace of this module
|
||||
|
||||
error[E0433]: failed to resolve: maybe a missing crate `mac`?
|
||||
--> $DIR/pub-macro-rules-fail.rs:22:12
|
||||
|
|
||||
LL | crate::mac!();
|
||||
| ^^^ maybe a missing crate `mac`?
|
||||
|
||||
error[E0433]: failed to resolve: maybe a missing crate `block_mac`?
|
||||
--> $DIR/pub-macro-rules-fail.rs:23:12
|
||||
|
|
||||
LL | crate::block_mac!();
|
||||
| ^^^^^^^^^ maybe a missing crate `block_mac`?
|
||||
|
||||
error: cannot find macro `mac` in this scope
|
||||
--> $DIR/pub-macro-rules-fail.rs:19:5
|
||||
|
|
||||
LL | mac!();
|
||||
| ^^^
|
||||
|
|
||||
= note: consider importing this macro:
|
||||
m::mac
|
||||
|
||||
error[E0603]: macro `private_mac` is private
|
||||
--> $DIR/pub-macro-rules-fail.rs:25:15
|
||||
|
|
||||
LL | crate::m::private_mac!();
|
||||
| ^^^^^^^^^^^ private macro
|
||||
|
|
||||
note: the macro `private_mac` is defined here
|
||||
--> $DIR/pub-macro-rules-fail.rs:10:5
|
||||
|
|
||||
LL | pub(self) macro_rules! private_mac { () => {} }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 5 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0428, E0433, E0603.
|
||||
For more information about an error, try `rustc --explain E0428`.
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
// check-pass
|
||||
|
||||
#![feature(pub_macro_rules)]
|
||||
|
||||
mod m {
|
||||
// `pub` `macro_rules` can be used earlier in item order than they are defined.
|
||||
foo!();
|
||||
|
||||
pub macro_rules! foo { () => {} }
|
||||
|
||||
// `pub(...)` works too.
|
||||
pub(super) macro_rules! bar { () => {} }
|
||||
}
|
||||
|
||||
// `pub` `macro_rules` are available by module path.
|
||||
m::foo!();
|
||||
|
||||
m::bar!();
|
||||
|
||||
fn main() {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue