Skip to content

Commit 438ca19

Browse files
committed
rustdoc: pass owner item of generics to cleaning functions
1 parent 1c28a2c commit 438ca19

File tree

4 files changed

+91
-63
lines changed

4 files changed

+91
-63
lines changed

src/librustdoc/clean/auto_trait.rs

+2
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ where
106106
self.cx,
107107
tcx.generics_of(item_def_id),
108108
ty::GenericPredicates::default(),
109+
item_def_id,
109110
);
110111
let params = raw_generics.params;
111112

@@ -456,6 +457,7 @@ where
456457
self.cx,
457458
tcx.generics_of(item_def_id),
458459
tcx.explicit_predicates_of(item_def_id),
460+
item_def_id,
459461
);
460462
let mut generic_params = raw_generics.params;
461463

src/librustdoc/clean/blanket_impl.rs

+1
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ impl<'a, 'tcx> BlanketImplFinder<'a, 'tcx> {
101101
cx,
102102
cx.tcx.generics_of(impl_def_id),
103103
cx.tcx.explicit_predicates_of(impl_def_id),
104+
impl_def_id,
104105
),
105106
// FIXME(eddyb) compute both `trait_` and `for_` from
106107
// the post-inference `trait_ref`, as it's more accurate.

src/librustdoc/clean/inline.rs

+19-11
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ pub(crate) fn build_external_trait(cx: &mut DocContext<'_>, did: DefId) -> clean
270270
.collect();
271271

272272
let predicates = cx.tcx.predicates_of(did);
273-
let generics = clean_ty_generics(cx, cx.tcx.generics_of(did), predicates);
273+
let generics = clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did);
274274
let generics = filter_non_trait_generics(did, generics);
275275
let (generics, supertrait_bounds) = separate_supertrait_bounds(generics);
276276
clean::Trait { def_id: did, generics, items: trait_items, bounds: supertrait_bounds }
@@ -282,8 +282,12 @@ pub(crate) fn build_function<'tcx>(
282282
) -> Box<clean::Function> {
283283
let sig = cx.tcx.fn_sig(def_id).instantiate_identity();
284284
// The generics need to be cleaned before the signature.
285-
let mut generics =
286-
clean_ty_generics(cx, cx.tcx.generics_of(def_id), cx.tcx.explicit_predicates_of(def_id));
285+
let mut generics = clean_ty_generics(
286+
cx,
287+
cx.tcx.generics_of(def_id),
288+
cx.tcx.explicit_predicates_of(def_id),
289+
def_id,
290+
);
287291
let bound_vars = clean_bound_vars(sig.bound_vars());
288292

289293
// At the time of writing early & late-bound params are stored separately in rustc,
@@ -315,7 +319,7 @@ fn build_enum(cx: &mut DocContext<'_>, did: DefId) -> clean::Enum {
315319
let predicates = cx.tcx.explicit_predicates_of(did);
316320

317321
clean::Enum {
318-
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates),
322+
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did),
319323
variants: cx.tcx.adt_def(did).variants().iter().map(|v| clean_variant_def(v, cx)).collect(),
320324
}
321325
}
@@ -326,7 +330,7 @@ fn build_struct(cx: &mut DocContext<'_>, did: DefId) -> clean::Struct {
326330

327331
clean::Struct {
328332
ctor_kind: variant.ctor_kind(),
329-
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates),
333+
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did),
330334
fields: variant.fields.iter().map(|x| clean_middle_field(x, cx)).collect(),
331335
}
332336
}
@@ -335,7 +339,7 @@ fn build_union(cx: &mut DocContext<'_>, did: DefId) -> clean::Union {
335339
let predicates = cx.tcx.explicit_predicates_of(did);
336340
let variant = cx.tcx.adt_def(did).non_enum_variant();
337341

338-
let generics = clean_ty_generics(cx, cx.tcx.generics_of(did), predicates);
342+
let generics = clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did);
339343
let fields = variant.fields.iter().map(|x| clean_middle_field(x, cx)).collect();
340344
clean::Union { generics, fields }
341345
}
@@ -352,7 +356,7 @@ fn build_type_alias(
352356

353357
Box::new(clean::TypeAlias {
354358
type_,
355-
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates),
359+
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did),
356360
inner_type,
357361
item_type: None,
358362
})
@@ -530,7 +534,7 @@ pub(crate) fn build_impl(
530534
})
531535
.map(|item| clean_impl_item(item, cx))
532536
.collect::<Vec<_>>(),
533-
clean_generics(impl_.generics, cx),
537+
clean_generics(impl_.generics, cx, did),
534538
),
535539
None => (
536540
tcx.associated_items(did)
@@ -558,7 +562,7 @@ pub(crate) fn build_impl(
558562
.map(|item| clean_middle_assoc_item(item, cx))
559563
.collect::<Vec<_>>(),
560564
clean::enter_impl_trait(cx, |cx| {
561-
clean_ty_generics(cx, tcx.generics_of(did), predicates)
565+
clean_ty_generics(cx, tcx.generics_of(did), predicates, did)
562566
}),
563567
),
564568
};
@@ -716,8 +720,12 @@ pub(crate) fn print_inlined_const(tcx: TyCtxt<'_>, did: DefId) -> String {
716720
}
717721

718722
fn build_const(cx: &mut DocContext<'_>, def_id: DefId) -> clean::Constant {
719-
let mut generics =
720-
clean_ty_generics(cx, cx.tcx.generics_of(def_id), cx.tcx.explicit_predicates_of(def_id));
723+
let mut generics = clean_ty_generics(
724+
cx,
725+
cx.tcx.generics_of(def_id),
726+
cx.tcx.explicit_predicates_of(def_id),
727+
def_id,
728+
);
721729
clean::simplify::move_bounds_to_generic_parameters(&mut generics);
722730

723731
clean::Constant {

0 commit comments

Comments
 (0)