Skip to content

Commit bed8e93

Browse files
remove Clean trait implementation for hir::ImplItem
1 parent a238d12 commit bed8e93

File tree

2 files changed

+43
-39
lines changed

2 files changed

+43
-39
lines changed

Diff for: src/librustdoc/clean/inline.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use rustc_span::hygiene::MacroKind;
1616
use rustc_span::symbol::{kw, sym, Symbol};
1717

1818
use crate::clean::{
19-
self, clean_fn_decl_from_did_and_sig, clean_middle_field, clean_middle_ty,
19+
self, clean_fn_decl_from_did_and_sig, clean_impl_item, clean_middle_field, clean_middle_ty,
2020
clean_trait_ref_with_bindings, clean_ty, clean_ty_generics, clean_variant_def,
2121
clean_visibility, utils, Attributes, AttributesExt, Clean, ImplKind, ItemId, Type, Visibility,
2222
};
@@ -416,7 +416,7 @@ pub(crate) fn build_impl(
416416
true
417417
}
418418
})
419-
.map(|item| item.clean(cx))
419+
.map(|item| clean_impl_item(item, cx))
420420
.collect::<Vec<_>>(),
421421
impl_.generics.clean(cx),
422422
),

Diff for: src/librustdoc/clean/mod.rs

+41-37
Original file line numberDiff line numberDiff line change
@@ -1065,45 +1065,46 @@ fn clean_trait_item<'tcx>(trait_item: &hir::TraitItem<'tcx>, cx: &mut DocContext
10651065
})
10661066
}
10671067

1068-
impl<'tcx> Clean<'tcx, Item> for hir::ImplItem<'tcx> {
1069-
fn clean(&self, cx: &mut DocContext<'tcx>) -> Item {
1070-
let local_did = self.def_id.to_def_id();
1071-
cx.with_param_env(local_did, |cx| {
1072-
let inner = match self.kind {
1073-
hir::ImplItemKind::Const(ty, expr) => {
1074-
let default = ConstantKind::Local { def_id: local_did, body: expr };
1075-
AssocConstItem(clean_ty(ty, cx), default)
1076-
}
1077-
hir::ImplItemKind::Fn(ref sig, body) => {
1078-
let m = clean_function(cx, sig, self.generics, body);
1079-
let defaultness = cx.tcx.impl_defaultness(self.def_id);
1080-
MethodItem(m, Some(defaultness))
1081-
}
1082-
hir::ImplItemKind::TyAlias(hir_ty) => {
1083-
let type_ = clean_ty(hir_ty, cx);
1084-
let generics = self.generics.clean(cx);
1085-
let item_type = clean_middle_ty(hir_ty_to_ty(cx.tcx, hir_ty), cx, None);
1086-
AssocTypeItem(
1087-
Box::new(Typedef { type_, generics, item_type: Some(item_type) }),
1088-
Vec::new(),
1089-
)
1090-
}
1091-
};
1068+
pub(crate) fn clean_impl_item<'tcx>(
1069+
impl_: &hir::ImplItem<'tcx>,
1070+
cx: &mut DocContext<'tcx>,
1071+
) -> Item {
1072+
let local_did = impl_.def_id.to_def_id();
1073+
cx.with_param_env(local_did, |cx| {
1074+
let inner = match impl_.kind {
1075+
hir::ImplItemKind::Const(ty, expr) => {
1076+
let default = ConstantKind::Local { def_id: local_did, body: expr };
1077+
AssocConstItem(clean_ty(ty, cx), default)
1078+
}
1079+
hir::ImplItemKind::Fn(ref sig, body) => {
1080+
let m = clean_function(cx, sig, impl_.generics, body);
1081+
let defaultness = cx.tcx.impl_defaultness(impl_.def_id);
1082+
MethodItem(m, Some(defaultness))
1083+
}
1084+
hir::ImplItemKind::TyAlias(hir_ty) => {
1085+
let type_ = clean_ty(hir_ty, cx);
1086+
let generics = impl_.generics.clean(cx);
1087+
let item_type = clean_middle_ty(hir_ty_to_ty(cx.tcx, hir_ty), cx, None);
1088+
AssocTypeItem(
1089+
Box::new(Typedef { type_, generics, item_type: Some(item_type) }),
1090+
Vec::new(),
1091+
)
1092+
}
1093+
};
10921094

1093-
let mut what_rustc_thinks =
1094-
Item::from_def_id_and_parts(local_did, Some(self.ident.name), inner, cx);
1095+
let mut what_rustc_thinks =
1096+
Item::from_def_id_and_parts(local_did, Some(impl_.ident.name), inner, cx);
10951097

1096-
let impl_ref = cx.tcx.impl_trait_ref(cx.tcx.local_parent(self.def_id));
1098+
let impl_ref = cx.tcx.impl_trait_ref(cx.tcx.local_parent(impl_.def_id));
10971099

1098-
// Trait impl items always inherit the impl's visibility --
1099-
// we don't want to show `pub`.
1100-
if impl_ref.is_some() {
1101-
what_rustc_thinks.visibility = Inherited;
1102-
}
1100+
// Trait impl items always inherit the impl's visibility --
1101+
// we don't want to show `pub`.
1102+
if impl_ref.is_some() {
1103+
what_rustc_thinks.visibility = Inherited;
1104+
}
11031105

1104-
what_rustc_thinks
1105-
})
1106-
}
1106+
what_rustc_thinks
1107+
})
11071108
}
11081109

11091110
impl<'tcx> Clean<'tcx, Item> for ty::AssocItem {
@@ -1995,8 +1996,11 @@ fn clean_impl<'tcx>(
19951996
let tcx = cx.tcx;
19961997
let mut ret = Vec::new();
19971998
let trait_ = impl_.of_trait.as_ref().map(|t| clean_trait_ref(t, cx));
1998-
let items =
1999-
impl_.items.iter().map(|ii| tcx.hir().impl_item(ii.id).clean(cx)).collect::<Vec<_>>();
1999+
let items = impl_
2000+
.items
2001+
.iter()
2002+
.map(|ii| clean_impl_item(tcx.hir().impl_item(ii.id), cx))
2003+
.collect::<Vec<_>>();
20002004
let def_id = tcx.hir().local_def_id(hir_id);
20012005

20022006
// If this impl block is an implementation of the Deref trait, then we

0 commit comments

Comments
 (0)