Skip to content

Commit 51dda50

Browse files
authored
Rollup merge of #99850 - GuillaumeGomez:clean-more-items, r=notriddle
rustdoc: Remove more Clean trait implementations Follow-up of #99638. r? `@notriddle`
2 parents da3f951 + 660dc6f commit 51dda50

File tree

3 files changed

+28
-32
lines changed

3 files changed

+28
-32
lines changed

src/librustdoc/clean/inline.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ use rustc_span::symbol::{kw, sym, Symbol};
1717

1818
use crate::clean::{
1919
self, clean_fn_decl_from_did_and_sig, clean_middle_field, clean_middle_ty, clean_ty,
20-
clean_ty_generics, utils, Attributes, AttributesExt, Clean, ImplKind, ItemId, Type, Visibility,
20+
clean_ty_generics, clean_visibility, utils, Attributes, AttributesExt, Clean, ImplKind, ItemId,
21+
Type, Visibility,
2122
};
2223
use crate::core::DocContext;
2324
use crate::formats::item_type::ItemType;
@@ -134,7 +135,7 @@ pub(crate) fn try_inline(
134135
);
135136
if let Some(import_def_id) = import_def_id {
136137
// The visibility needs to reflect the one from the reexport and not from the "source" DefId.
137-
item.visibility = cx.tcx.visibility(import_def_id).clean(cx);
138+
item.visibility = clean_visibility(cx.tcx.visibility(import_def_id));
138139
}
139140
ret.push(item);
140141
Some(ret)
@@ -599,7 +600,7 @@ fn build_macro(
599600
match CStore::from_tcx(cx.tcx).load_macro_untracked(def_id, cx.sess()) {
600601
LoadedMacro::MacroDef(item_def, _) => {
601602
if let ast::ItemKind::MacroDef(ref def) = item_def.kind {
602-
let vis = cx.tcx.visibility(import_def_id.unwrap_or(def_id)).clean(cx);
603+
let vis = clean_visibility(cx.tcx.visibility(import_def_id.unwrap_or(def_id)));
603604
clean::MacroItem(clean::Macro {
604605
source: utils::display_macro_source(cx, name, def, def_id, vis),
605606
})

src/librustdoc/clean/mod.rs

+22-27
Original file line numberDiff line numberDiff line change
@@ -1812,32 +1812,25 @@ fn is_field_vis_inherited(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
18121812
}
18131813
}
18141814

1815-
impl<'tcx> Clean<'tcx, Visibility> for ty::Visibility {
1816-
fn clean(&self, _cx: &mut DocContext<'_>) -> Visibility {
1817-
match *self {
1818-
ty::Visibility::Public => Visibility::Public,
1819-
// NOTE: this is not quite right: `ty` uses `Invisible` to mean 'private',
1820-
// while rustdoc really does mean inherited. That means that for enum variants, such as
1821-
// `pub enum E { V }`, `V` will be marked as `Public` by `ty`, but as `Inherited` by rustdoc.
1822-
// Various parts of clean override `tcx.visibility` explicitly to make sure this distinction is captured.
1823-
ty::Visibility::Invisible => Visibility::Inherited,
1824-
ty::Visibility::Restricted(module) => Visibility::Restricted(module),
1825-
}
1826-
}
1827-
}
1828-
1829-
impl<'tcx> Clean<'tcx, VariantStruct> for rustc_hir::VariantData<'tcx> {
1830-
fn clean(&self, cx: &mut DocContext<'tcx>) -> VariantStruct {
1831-
VariantStruct {
1832-
struct_type: CtorKind::from_hir(self),
1833-
fields: self.fields().iter().map(|x| clean_field(x, cx)).collect(),
1834-
}
1815+
pub(crate) fn clean_visibility(vis: ty::Visibility) -> Visibility {
1816+
match vis {
1817+
ty::Visibility::Public => Visibility::Public,
1818+
// NOTE: this is not quite right: `ty` uses `Invisible` to mean 'private',
1819+
// while rustdoc really does mean inherited. That means that for enum variants, such as
1820+
// `pub enum E { V }`, `V` will be marked as `Public` by `ty`, but as `Inherited` by rustdoc.
1821+
// Various parts of clean override `tcx.visibility` explicitly to make sure this distinction is captured.
1822+
ty::Visibility::Invisible => Visibility::Inherited,
1823+
ty::Visibility::Restricted(module) => Visibility::Restricted(module),
18351824
}
18361825
}
18371826

1838-
impl<'tcx> Clean<'tcx, Vec<Item>> for hir::VariantData<'tcx> {
1839-
fn clean(&self, cx: &mut DocContext<'tcx>) -> Vec<Item> {
1840-
self.fields().iter().map(|x| clean_field(x, cx)).collect()
1827+
fn clean_variant_data<'tcx>(
1828+
variant: &hir::VariantData<'tcx>,
1829+
cx: &mut DocContext<'tcx>,
1830+
) -> VariantStruct {
1831+
VariantStruct {
1832+
struct_type: CtorKind::from_hir(variant),
1833+
fields: variant.fields().iter().map(|x| clean_field(x, cx)).collect(),
18411834
}
18421835
}
18431836

@@ -1863,8 +1856,10 @@ impl<'tcx> Clean<'tcx, Item> for ty::VariantDef {
18631856
impl<'tcx> Clean<'tcx, Variant> for hir::VariantData<'tcx> {
18641857
fn clean(&self, cx: &mut DocContext<'tcx>) -> Variant {
18651858
match self {
1866-
hir::VariantData::Struct(..) => Variant::Struct(self.clean(cx)),
1867-
hir::VariantData::Tuple(..) => Variant::Tuple(self.clean(cx)),
1859+
hir::VariantData::Struct(..) => Variant::Struct(clean_variant_data(self, cx)),
1860+
hir::VariantData::Tuple(..) => {
1861+
Variant::Tuple(self.fields().iter().map(|x| clean_field(x, cx)).collect())
1862+
}
18681863
hir::VariantData::Unit(..) => Variant::CLike,
18691864
}
18701865
}
@@ -1983,7 +1978,7 @@ fn clean_maybe_renamed_item<'tcx>(
19831978
clean_fn_or_proc_macro(item, sig, generics, body_id, &mut name, cx)
19841979
}
19851980
ItemKind::Macro(ref macro_def, _) => {
1986-
let ty_vis = cx.tcx.visibility(def_id).clean(cx);
1981+
let ty_vis = clean_visibility(cx.tcx.visibility(def_id));
19871982
MacroItem(Macro {
19881983
source: display_macro_source(cx, name, macro_def, def_id, ty_vis),
19891984
})
@@ -2112,7 +2107,7 @@ fn clean_extern_crate<'tcx>(
21122107
name: Some(name),
21132108
attrs: Box::new(attrs.clean(cx)),
21142109
item_id: crate_def_id.into(),
2115-
visibility: ty_vis.clean(cx),
2110+
visibility: clean_visibility(ty_vis),
21162111
kind: box ExternCrateItem { src: orig_name },
21172112
cfg: attrs.cfg(cx.tcx, &cx.cache.hidden_cfg),
21182113
}]

src/librustdoc/clean/types.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ use crate::clean::cfg::Cfg;
3737
use crate::clean::external_path;
3838
use crate::clean::inline::{self, print_inlined_const};
3939
use crate::clean::utils::{is_literal_expr, print_const_expr, print_evaluated_const};
40-
use crate::clean::Clean;
40+
use crate::clean::{clean_visibility, Clean};
4141
use crate::core::DocContext;
4242
use crate::formats::cache::Cache;
4343
use crate::formats::item_type::ItemType;
@@ -499,7 +499,7 @@ impl Item {
499499
let visibility = if matches!(&kind, ItemKind::KeywordItem | ItemKind::PrimitiveItem(..)) {
500500
Visibility::Public
501501
} else {
502-
cx.tcx.visibility(def_id).clean(cx)
502+
clean_visibility(cx.tcx.visibility(def_id))
503503
};
504504

505505
Item { item_id: def_id.into(), kind: box kind, name, attrs, visibility, cfg }

0 commit comments

Comments
 (0)