1
Fork 0

Rollup merge of #104006 - flip1995:lang-items-clippy, r=oli-obk

Add variant_name function to `LangItem`

Clippy has an internal lint that checks for the usage of hardcoded def paths and suggests to replace them with a lang or diagnostic item, if possible. This was implemented with a hack, by getting all the variants of the `LangItem` enum and then index into it with the position of the `LangItem` in the `items` list. This is no longer possible, because the `items` list can't be accessed anymore.

Follow up to #103603

cc `@camsteffen`
r? `@oli-obk`

This is blocking the sync between Clippy and Rust. I'm not sure if this is the best solution here, or if I should add a method `items()` to `LanguageItems` and keep the code in Clippy unchanged.
This commit is contained in:
Matthias Krüger 2022-11-18 14:13:37 +01:00 committed by GitHub
commit 2ea012619e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 36 deletions

View file

@ -95,6 +95,14 @@ macro_rules! language_item_table {
}
}
/// Returns the name of the `LangItem` enum variant.
// This method is used by Clippy for internal lints.
pub fn variant_name(self) -> &'static str {
match self {
$( LangItem::$variant => stringify!($variant), )*
}
}
pub fn target(self) -> Target {
match self {
$( LangItem::$variant => $target, )*