bef93d3b14
Fix and improve `match_type_on_diagnostic_item` This extracts the fix for the lint out of #7647. There's still a couple of other functions to check, but at least this will get lint working again. The two added util functions (`is_diagnostic_item` and `is_lang_item`) are needed to handle `DefId` for unit and tuple struct/variant constructors. The `rustc_diagnostic_item` and `lang` attributes are attached to the struct/variant `DefId`, but most of the time they are used through their constructors which have a different `DefId`. The two utility functions will check if the `DefId` is for a constructor and switch to the associated struct/variant `DefId`. There does seem to be a bug on rustc's side where constructor `DefId`s from external crates seem to be returning `DefKind::Variant` instead of `DefKind::Ctor()`. There's a workaround put in right. changelog: None |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
README.md |