Make the tool_lints actually usable by flip1995 · Pull Request #52851 · rust-lang/rust (original) (raw)

cc #44690

Necessary for rust-lang/rust-clippy#2955 and rust-lang/rust-clippy#2977

This PR makes it possible for lint tools (at the moment only for Clippy) to implement the tool_lints, like it was documented in #52018.

Because the declare_lint macro is pretty cluttered right now, there was not really a good way to add the tool_name as an additional argument of the macro. That's why I chose to introduce the new declare_tool_lint macro.

The switch from &str to String in the lint_groups FxHashMap is because I got weird error messages in the check_lint_name method. And the by_name field of the LintStore also uses String.

What comes with this PR:

If this PR lands and Clippy switches to the tool_lints, the currently used methods

#[cfg_attr(feature = "cargo-clippy", allow(clippy_lint))] #[allow(unknown_lints, clippy_lint)]

to allow/warn/deny/forbid Clippy lints, won't have any effects anymore, but also won't produce a warning. That is because the name of clippy_lint will then be clippy::clippy_lint. (Maybe we can add a clippy lint to search for cfg_attr appearances with the cargo-clippy feature?)

r? @oli-obk