diff options
| author | bors <bors@rust-lang.org> | 2020-08-02 01:04:54 +0000 | 
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-08-02 01:04:54 +0000 | 
| commit | e18b56345f06c12be4dba9b5d76f306cdf0ab7f9 (patch) | |
| tree | 80be2e591c7eea519d4bb3041578297e02514f15 /src/librustdoc/clean/mod.rs | |
| parent | 5ef872f9619ed78a349c1407ebac719a980209ee (diff) | |
| parent | 82147885bbd373f5f6803bdbc497debb90ca915e (diff) | |
| download | rust-e18b56345f06c12be4dba9b5d76f306cdf0ab7f9.tar.gz rust-e18b56345f06c12be4dba9b5d76f306cdf0ab7f9.zip | |
Auto merge of #75033 - Manishearth:rollup-d8afil1, r=Manishearth
Rollup of 5 pull requests Successful merges: - #74602 (Clarify the doc for MaybeUninit::zeroed on incorrect use) - #74720 (Clean up E0728 explanation) - #74992 (fix rustdoc generic param order) - #75015 (Add Vec::spare_capacity_mut) - #75022 (Use a slice pattern instead of rchunks_exact(_).next()) Failed merges: r? @ghost
Diffstat (limited to 'src/librustdoc/clean/mod.rs')
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 23 | 
1 files changed, 8 insertions, 15 deletions
| diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index cc3a60c596a..5b048372624 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -716,11 +716,11 @@ impl<'a, 'tcx> Clean<Generics> for (&'a ty::Generics, ty::GenericPredicates<'tcx // Bounds in the type_params and lifetimes fields are repeated in the // predicates field (see rustc_typeck::collect::ty_generics), so remove // them. - let stripped_typarams = gens + let stripped_params = gens .params .iter() .filter_map(|param| match param.kind { - ty::GenericParamDefKind::Lifetime => None, + ty::GenericParamDefKind::Lifetime => Some(param.clean(cx)), ty::GenericParamDefKind::Type { synthetic, .. } => { if param.name == kw::SelfUpper { assert_eq!(param.index, 0); @@ -732,7 +732,7 @@ impl<'a, 'tcx> Clean<Generics> for (&'a ty::Generics, ty::GenericPredicates<'tcx } Some(param.clean(cx)) } - ty::GenericParamDefKind::Const { .. } => None, + ty::GenericParamDefKind::Const { .. } => Some(param.clean(cx)), }) .collect::<Vec<GenericParamDef>>(); @@ -844,8 +844,10 @@ impl<'a, 'tcx> Clean<Generics> for (&'a ty::Generics, ty::GenericPredicates<'tcx // Run through the type parameters again and insert a ?Sized // unbound for any we didn't find to be Sized. - for tp in &stripped_typarams { - if !sized_params.contains(&tp.name) { + for tp in &stripped_params { + if matches!(tp.kind, types::GenericParamDefKind::Type { .. }) + && !sized_params.contains(&tp.name) + { where_predicates.push(WP::BoundPredicate { ty: Type::Generic(tp.name.clone()), bounds: vec![GenericBound::maybe_sized(cx)], @@ -858,16 +860,7 @@ impl<'a, 'tcx> Clean<Generics> for (&'a ty::Generics, ty::GenericPredicates<'tcx // and instead see `where T: Foo + Bar + Sized + 'a` Generics { - params: gens - .params - .iter() - .flat_map(|param| match param.kind { - ty::GenericParamDefKind::Lifetime => Some(param.clean(cx)), - ty::GenericParamDefKind::Type { .. } => None, - ty::GenericParamDefKind::Const { .. } => Some(param.clean(cx)), - }) - .chain(simplify::ty_params(stripped_typarams).into_iter()) - .collect(), + params: stripped_params, where_predicates: simplify::where_clauses(cx, where_predicates), } } | 
