lang_items: add support for lang items on variants

This commit adds support for lang items (`#[lang = "..."]` attributes)
on enum variants.

Signed-off-by: David Wood <david@davidtw.co>
This commit is contained in:
David Wood 2020-08-04 10:27:35 +01:00
parent 97ba0c7171
commit 764dc3dc2f
No known key found for this signature in database
GPG Key ID: 2592E76C87381FD9
2 changed files with 9 additions and 1 deletions

View File

@ -29,6 +29,7 @@ pub enum Target {
TyAlias,
OpaqueTy,
Enum,
Variant,
Struct,
Union,
Trait,
@ -62,6 +63,7 @@ impl Display for Target {
Target::TyAlias => "type alias",
Target::OpaqueTy => "opaque type",
Target::Enum => "enum",
Target::Variant => "enum variant",
Target::Struct => "struct",
Target::Union => "union",
Target::Trait => "trait",

View File

@ -30,7 +30,13 @@ struct LanguageItemCollector<'tcx> {
impl ItemLikeVisitor<'v> for LanguageItemCollector<'tcx> {
fn visit_item(&mut self, item: &hir::Item<'_>) {
self.check_for_lang(Target::from_item(item), item.hir_id, item.attrs)
self.check_for_lang(Target::from_item(item), item.hir_id, item.attrs);
if let hir::ItemKind::Enum(def, ..) = &item.kind {
for variant in def.variants {
self.check_for_lang(Target::Variant, variant.id, variant.attrs);
}
}
}
fn visit_trait_item(&mut self, trait_item: &hir::TraitItem<'_>) {