Rollup merge of #97032 - est31:unused_macro_rules, r=petrochenkov

Allow the unused_macro_rules lint for now

It was newly added by #96150 with warn by default, which is great as it gave exposure to the community, and their feedback gave me ideas for improvements.

Allowing the lint is good for two reasons:

* It makes the transition easier as e.g. allow directives won't fire the unknown lint warning once it is turned to warn by default in the future. The [commit that allowed the lint in fuchsia](https://fuchsia.googlesource.com/fuchsia/+/9d8f96517c3963de2f0e25598fd36061914524cd%5E%21/) had to allow unknown lints for example.
This is especially important compared to other lints in the unused group,
because the _ prefix trick doesn't exist for macro rules, allowing is the
only option (either of unused_macro_rules, or of the entire unused group,
but that is not as informative to readers). Allowing the lint also makes it
possible to work on possible heuristics for disabling the macro in specific
cases.
* It gives time for implementing heuristics for when to suppress the lint, e.g.
when `compile_error!` is invoked by that arm (so it's only there to yield an error).

See: https://github.com/rust-lang/rust/pull/96150#issuecomment-1126599107

I would also like this to be backported to the 1.62 beta branch (cc #97016).
This commit is contained in:
Matthias Krüger 2022-05-15 08:10:42 +02:00 committed by GitHub
commit 673d45124b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -790,6 +790,7 @@
/// ### Example /// ### Example
/// ///
/// ```rust /// ```rust
/// #[warn(unused_macro_rules)]
/// macro_rules! unused_empty { /// macro_rules! unused_empty {
/// (hello) => { println!("Hello, world!") }; // This rule is unused /// (hello) => { println!("Hello, world!") }; // This rule is unused
/// () => { println!("empty") }; // This rule is used /// () => { println!("empty") }; // This rule is used
@ -814,7 +815,7 @@
/// ///
/// [`macro_export` attribute]: https://doc.rust-lang.org/reference/macros-by-example.html#path-based-scope /// [`macro_export` attribute]: https://doc.rust-lang.org/reference/macros-by-example.html#path-based-scope
pub UNUSED_MACRO_RULES, pub UNUSED_MACRO_RULES,
Warn, Allow,
"detects macro rules that were not used" "detects macro rules that were not used"
} }