diff --git a/src/librustdoc/html/render/cache.rs b/src/librustdoc/html/render/cache.rs index 97694150c6c..a21cf5266fe 100644 --- a/src/librustdoc/html/render/cache.rs +++ b/src/librustdoc/html/render/cache.rs @@ -173,9 +173,9 @@ crate fn get_index_search_type<'tcx>( tcx: TyCtxt<'tcx>, ) -> Option { let (all_types, ret_types) = match *item.kind { - clean::FunctionItem(ref f) => get_all_types(&f.generics, &f.decl, tcx, &cache), - clean::MethodItem(ref m, _) => get_all_types(&m.generics, &m.decl, tcx, &cache), - clean::TyMethodItem(ref m) => get_all_types(&m.generics, &m.decl, tcx, &cache), + clean::FunctionItem(ref f) => get_all_types(&f.generics, &f.decl, tcx), + clean::MethodItem(ref m, _) => get_all_types(&m.generics, &m.decl, tcx), + clean::TyMethodItem(ref m) => get_all_types(&m.generics, &m.decl, tcx), _ => return None, }; @@ -257,7 +257,6 @@ crate fn get_real_types<'tcx>( arg: &Type, tcx: TyCtxt<'tcx>, recurse: i32, - cache: &Cache, res: &mut FxHashSet<(Type, TypeKind)>, ) -> usize { fn insert(res: &mut FxHashSet<(Type, TypeKind)>, tcx: TyCtxt<'_>, ty: Type) -> usize { @@ -279,8 +278,7 @@ crate fn get_real_types<'tcx>( } let mut nb_added = 0; - if arg.is_full_generic() { - let arg_s = Symbol::intern(&arg.print(cache).to_string()); + if let &Type::Generic(arg_s) = arg { if let Some(where_pred) = generics.where_predicates.iter().find(|g| match g { WherePredicate::BoundPredicate { ty, .. } => ty.def_id() == arg.def_id(), _ => false, @@ -293,7 +291,7 @@ crate fn get_real_types<'tcx>( continue; } if let Some(ty) = x.get_type() { - let adds = get_real_types(generics, &ty, tcx, recurse + 1, cache, res); + let adds = get_real_types(generics, &ty, tcx, recurse + 1, res); nb_added += adds; if adds == 0 && !ty.is_full_generic() { nb_added += insert(res, tcx, ty); @@ -306,7 +304,7 @@ crate fn get_real_types<'tcx>( if let Some(bound) = generics.params.iter().find(|g| g.is_type() && g.name == arg_s) { for bound in bound.get_bounds().unwrap_or(&[]) { if let Some(ty) = bound.get_trait_type() { - let adds = get_real_types(generics, &ty, tcx, recurse + 1, cache, res); + let adds = get_real_types(generics, &ty, tcx, recurse + 1, res); nb_added += adds; if adds == 0 && !ty.is_full_generic() { nb_added += insert(res, tcx, ty); @@ -319,7 +317,7 @@ crate fn get_real_types<'tcx>( if let Some(gens) = arg.generics() { for gen in gens.iter() { if gen.is_full_generic() { - nb_added += get_real_types(generics, gen, tcx, recurse + 1, cache, res); + nb_added += get_real_types(generics, gen, tcx, recurse + 1, res); } else { nb_added += insert(res, tcx, (*gen).clone()); } @@ -337,7 +335,6 @@ crate fn get_all_types<'tcx>( generics: &Generics, decl: &FnDecl, tcx: TyCtxt<'tcx>, - cache: &Cache, ) -> (Vec<(Type, TypeKind)>, Vec<(Type, TypeKind)>) { let mut all_types = FxHashSet::default(); for arg in decl.inputs.values.iter() { @@ -345,7 +342,7 @@ crate fn get_all_types<'tcx>( continue; } let mut args = FxHashSet::default(); - get_real_types(generics, &arg.type_, tcx, 0, cache, &mut args); + get_real_types(generics, &arg.type_, tcx, 0, &mut args); if !args.is_empty() { all_types.extend(args); } else { @@ -358,7 +355,7 @@ crate fn get_all_types<'tcx>( let ret_types = match decl.output { FnRetTy::Return(ref return_type) => { let mut ret = FxHashSet::default(); - get_real_types(generics, &return_type, tcx, 0, cache, &mut ret); + get_real_types(generics, &return_type, tcx, 0, &mut ret); if ret.is_empty() { if let Some(kind) = return_type.def_id().map(|did| tcx.def_kind(did).into()) { ret.insert((return_type.clone(), kind));