diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 4777f9c96e6ee..07a1c9c3cd5b4 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -242,30 +242,28 @@ pub(crate) fn clean_middle_const<'tcx>( } } -impl<'tcx> Clean<'tcx, Option> for ty::Region<'tcx> { - fn clean(&self, _cx: &mut DocContext<'_>) -> Option { - match **self { - ty::ReStatic => Some(Lifetime::statik()), - ty::ReLateBound(_, ty::BoundRegion { kind: ty::BrNamed(_, name), .. }) => { - if name != kw::UnderscoreLifetime { Some(Lifetime(name)) } else { None } - } - ty::ReEarlyBound(ref data) => { - if data.name != kw::UnderscoreLifetime { - Some(Lifetime(data.name)) - } else { - None - } - } - ty::ReLateBound(..) - | ty::ReFree(..) - | ty::ReVar(..) - | ty::RePlaceholder(..) - | ty::ReEmpty(_) - | ty::ReErased => { - debug!("cannot clean region {:?}", self); +pub(crate) fn clean_middle_region<'tcx>(region: ty::Region<'tcx>) -> Option { + match *region { + ty::ReStatic => Some(Lifetime::statik()), + ty::ReLateBound(_, ty::BoundRegion { kind: ty::BrNamed(_, name), .. }) => { + if name != kw::UnderscoreLifetime { Some(Lifetime(name)) } else { None } + } + ty::ReEarlyBound(ref data) => { + if data.name != kw::UnderscoreLifetime { + Some(Lifetime(data.name)) + } else { None } } + ty::ReLateBound(..) + | ty::ReFree(..) + | ty::ReVar(..) + | ty::RePlaceholder(..) + | ty::ReEmpty(_) + | ty::ReErased => { + debug!("cannot clean region {:?}", region); + None + } } } @@ -316,7 +314,7 @@ impl<'tcx> Clean<'tcx, Option> for ty::Predicate<'tcx> { ty::PredicateKind::Trait(pred) => { clean_poly_trait_predicate(bound_predicate.rebind(pred), cx) } - ty::PredicateKind::RegionOutlives(pred) => clean_region_outlives_predicate(pred, cx), + ty::PredicateKind::RegionOutlives(pred) => clean_region_outlives_predicate(pred), ty::PredicateKind::TypeOutlives(pred) => clean_type_outlives_predicate(pred, cx), ty::PredicateKind::Projection(pred) => Some(clean_projection_predicate(pred, cx)), ty::PredicateKind::ConstEvaluatable(..) => None, @@ -353,7 +351,6 @@ fn clean_poly_trait_predicate<'tcx>( fn clean_region_outlives_predicate<'tcx>( pred: ty::OutlivesPredicate, ty::Region<'tcx>>, - cx: &mut DocContext<'tcx>, ) -> Option { let ty::OutlivesPredicate(a, b) = pred; @@ -362,8 +359,10 @@ fn clean_region_outlives_predicate<'tcx>( } Some(WherePredicate::RegionPredicate { - lifetime: a.clean(cx).expect("failed to clean lifetime"), - bounds: vec![GenericBound::Outlives(b.clean(cx).expect("failed to clean bounds"))], + lifetime: clean_middle_region(a).expect("failed to clean lifetime"), + bounds: vec![GenericBound::Outlives( + clean_middle_region(b).expect("failed to clean bounds"), + )], }) } @@ -379,7 +378,9 @@ fn clean_type_outlives_predicate<'tcx>( Some(WherePredicate::BoundPredicate { ty: clean_middle_ty(ty, cx, None), - bounds: vec![GenericBound::Outlives(lt.clean(cx).expect("failed to clean lifetimes"))], + bounds: vec![GenericBound::Outlives( + clean_middle_region(lt).expect("failed to clean lifetimes"), + )], bound_params: Vec::new(), }) } @@ -994,15 +995,6 @@ impl<'tcx> Clean<'tcx, FnRetTy> for hir::FnRetTy<'tcx> { } } -impl<'tcx> Clean<'tcx, bool> for hir::IsAuto { - fn clean(&self, _: &mut DocContext<'tcx>) -> bool { - match *self { - hir::IsAuto::Yes => true, - hir::IsAuto::No => false, - } - } -} - impl<'tcx> Clean<'tcx, Path> for hir::TraitRef<'tcx> { fn clean(&self, cx: &mut DocContext<'tcx>) -> Path { let path = clean_path(self.path, cx); @@ -1592,7 +1584,7 @@ pub(crate) fn clean_middle_ty<'tcx>( } ty::RawPtr(mt) => RawPointer(mt.mutbl, Box::new(clean_middle_ty(mt.ty, cx, None))), ty::Ref(r, ty, mutbl) => BorrowedRef { - lifetime: r.clean(cx), + lifetime: clean_middle_region(r), mutability: mutbl, type_: Box::new(clean_middle_ty(ty, cx, None)), }, @@ -1639,7 +1631,7 @@ pub(crate) fn clean_middle_ty<'tcx>( inline::record_extern_fqn(cx, did, ItemType::Trait); - let lifetime = reg.clean(cx); + let lifetime = clean_middle_region(*reg); let mut bounds = vec![]; for did in dids { @@ -1705,7 +1697,7 @@ pub(crate) fn clean_middle_ty<'tcx>( let trait_ref = match bound_predicate.skip_binder() { ty::PredicateKind::Trait(tr) => bound_predicate.rebind(tr.trait_ref), ty::PredicateKind::TypeOutlives(ty::OutlivesPredicate(_ty, reg)) => { - if let Some(r) = reg.clean(cx) { + if let Some(r) = clean_middle_region(reg) { regions.push(GenericBound::Outlives(r)); } return None; diff --git a/src/librustdoc/clean/utils.rs b/src/librustdoc/clean/utils.rs index 621f70f0da986..43e71e90a6f5b 100644 --- a/src/librustdoc/clean/utils.rs +++ b/src/librustdoc/clean/utils.rs @@ -2,9 +2,9 @@ use crate::clean::auto_trait::AutoTraitFinder; use crate::clean::blanket_impl::BlanketImplFinder; use crate::clean::render_macro_matchers::render_macro_matcher; use crate::clean::{ - clean_middle_const, clean_middle_ty, inline, Clean, Crate, ExternalCrate, Generic, GenericArg, - GenericArgs, ImportSource, Item, ItemKind, Lifetime, Path, PathSegment, Primitive, - PrimitiveType, Type, TypeBinding, Visibility, + clean_middle_const, clean_middle_region, clean_middle_ty, inline, Clean, Crate, ExternalCrate, + Generic, GenericArg, GenericArgs, ImportSource, Item, ItemKind, Lifetime, Path, PathSegment, + Primitive, PrimitiveType, Type, TypeBinding, Visibility, }; use crate::core::DocContext; use crate::formats::item_type::ItemType; @@ -86,7 +86,7 @@ pub(crate) fn substs_to_args<'tcx>( Vec::with_capacity(substs.len().saturating_sub(if skip_first { 1 } else { 0 })); ret_val.extend(substs.iter().filter_map(|kind| match kind.unpack() { GenericArgKind::Lifetime(lt) => { - Some(GenericArg::Lifetime(lt.clean(cx).unwrap_or(Lifetime::elided()))) + Some(GenericArg::Lifetime(clean_middle_region(lt).unwrap_or(Lifetime::elided()))) } GenericArgKind::Type(_) if skip_first => { skip_first = false;