diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-07-30 22:51:01 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-30 22:51:01 +0200 |
| commit | 55258de97a6365dfd2b8b0b1bad77e9246e419b9 (patch) | |
| tree | 29dba7dfe376332570a1c84450f30772fcd01508 | |
| parent | 656cd3a48fe6e43d00b9a912e35216fa15fb487b (diff) | |
| parent | c407ef0de06dcd3450df28eb2c0ea6396b97dcb0 (diff) | |
| download | rust-55258de97a6365dfd2b8b0b1bad77e9246e419b9.tar.gz rust-55258de97a6365dfd2b8b0b1bad77e9246e419b9.zip | |
Rollup merge of #99950 - GuillaumeGomez:rm-clean-impls, r=Dylan-DPC
Remove more Clean trait implementations This time it even allowed to remove a function. Follow-up of https://github.com/rust-lang/rust/pull/99638. r? `@notriddle`
| -rw-r--r-- | src/librustdoc/clean/inline.rs | 6 | ||||
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 62 |
2 files changed, 30 insertions, 38 deletions
diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index 55d77a63f61..838283e32da 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -17,8 +17,8 @@ use rustc_span::symbol::{kw, sym, Symbol}; use crate::clean::{ self, clean_fn_decl_from_did_and_sig, clean_middle_field, clean_middle_ty, clean_ty, - clean_ty_generics, clean_visibility, utils, Attributes, AttributesExt, Clean, ImplKind, ItemId, - Type, Visibility, + clean_ty_generics, clean_variant_def, clean_visibility, utils, Attributes, AttributesExt, + Clean, ImplKind, ItemId, Type, Visibility, }; use crate::core::DocContext; use crate::formats::item_type::ItemType; @@ -236,7 +236,7 @@ fn build_enum(cx: &mut DocContext<'_>, did: DefId) -> clean::Enum { clean::Enum { generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates), - variants: cx.tcx.adt_def(did).variants().iter().map(|v| v.clean(cx)).collect(), + variants: cx.tcx.adt_def(did).variants().iter().map(|v| clean_variant_def(v, cx)).collect(), } } diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 10676aca480..4067cf8441b 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1824,44 +1824,36 @@ pub(crate) fn clean_visibility(vis: ty::Visibility) -> Visibility { } } +pub(crate) fn clean_variant_def<'tcx>(variant: &ty::VariantDef, cx: &mut DocContext<'tcx>) -> Item { + let kind = match variant.ctor_kind { + CtorKind::Const => Variant::CLike, + CtorKind::Fn => Variant::Tuple( + variant.fields.iter().map(|field| clean_middle_field(field, cx)).collect(), + ), + CtorKind::Fictive => Variant::Struct(VariantStruct { + struct_type: CtorKind::Fictive, + fields: variant.fields.iter().map(|field| clean_middle_field(field, cx)).collect(), + }), + }; + let what_rustc_thinks = + Item::from_def_id_and_parts(variant.def_id, Some(variant.name), VariantItem(kind), cx); + // don't show `pub` for variants, which always inherit visibility + Item { visibility: Inherited, ..what_rustc_thinks } +} + fn clean_variant_data<'tcx>( variant: &hir::VariantData<'tcx>, cx: &mut DocContext<'tcx>, -) -> VariantStruct { - VariantStruct { - struct_type: CtorKind::from_hir(variant), - fields: variant.fields().iter().map(|x| clean_field(x, cx)).collect(), - } -} - -impl<'tcx> Clean<'tcx, Item> for ty::VariantDef { - fn clean(&self, cx: &mut DocContext<'tcx>) -> Item { - let kind = match self.ctor_kind { - CtorKind::Const => Variant::CLike, - CtorKind::Fn => Variant::Tuple( - self.fields.iter().map(|field| clean_middle_field(field, cx)).collect(), - ), - CtorKind::Fictive => Variant::Struct(VariantStruct { - struct_type: CtorKind::Fictive, - fields: self.fields.iter().map(|field| clean_middle_field(field, cx)).collect(), - }), - }; - let what_rustc_thinks = - Item::from_def_id_and_parts(self.def_id, Some(self.name), VariantItem(kind), cx); - // don't show `pub` for variants, which always inherit visibility - Item { visibility: Inherited, ..what_rustc_thinks } - } -} - -impl<'tcx> Clean<'tcx, Variant> for hir::VariantData<'tcx> { - fn clean(&self, cx: &mut DocContext<'tcx>) -> Variant { - match self { - hir::VariantData::Struct(..) => Variant::Struct(clean_variant_data(self, cx)), - hir::VariantData::Tuple(..) => { - Variant::Tuple(self.fields().iter().map(|x| clean_field(x, cx)).collect()) - } - hir::VariantData::Unit(..) => Variant::CLike, +) -> Variant { + match variant { + hir::VariantData::Struct(..) => Variant::Struct(VariantStruct { + struct_type: CtorKind::from_hir(variant), + fields: variant.fields().iter().map(|x| clean_field(x, cx)).collect(), + }), + hir::VariantData::Tuple(..) => { + Variant::Tuple(variant.fields().iter().map(|x| clean_field(x, cx)).collect()) } + hir::VariantData::Unit(..) => Variant::CLike, } } @@ -2009,7 +2001,7 @@ fn clean_maybe_renamed_item<'tcx>( impl<'tcx> Clean<'tcx, Item> for hir::Variant<'tcx> { fn clean(&self, cx: &mut DocContext<'tcx>) -> Item { - let kind = VariantItem(self.data.clean(cx)); + let kind = VariantItem(clean_variant_data(&self.data, cx)); let what_rustc_thinks = Item::from_hir_id_and_parts(self.id, Some(self.ident.name), kind, cx); // don't show `pub` for variants, which are always public |
