Skip to content

Commit bdc8c5c

Browse files
committed
rustdoc: pass owner item of generics to cleaning functions
1 parent a3cfa03 commit bdc8c5c

File tree

4 files changed

+91
-63
lines changed

4 files changed

+91
-63
lines changed

src/librustdoc/clean/auto_trait.rs

Lines changed: 2 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ pub(crate) fn build_external_trait(cx: &mut DocContext<'_>, did: DefId) -> clean
272272
.collect();
273273

274274
let predicates = cx.tcx.predicates_of(did);
275-
let generics = clean_ty_generics(cx, cx.tcx.generics_of(did), predicates);
275+
let generics = clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did);
276276
let generics = filter_non_trait_generics(did, generics);
277277
let (generics, supertrait_bounds) = separate_supertrait_bounds(generics);
278278
clean::Trait { def_id: did, generics, items: trait_items, bounds: supertrait_bounds }
@@ -284,8 +284,12 @@ pub(crate) fn build_function<'tcx>(
284284
) -> Box<clean::Function> {
285285
let sig = cx.tcx.fn_sig(def_id).instantiate_identity();
286286
// The generics need to be cleaned before the signature.
287-
let mut generics =
288-
clean_ty_generics(cx, cx.tcx.generics_of(def_id), cx.tcx.explicit_predicates_of(def_id));
287+
let mut generics = clean_ty_generics(
288+
cx,
289+
cx.tcx.generics_of(def_id),
290+
cx.tcx.explicit_predicates_of(def_id),
291+
def_id,
292+
);
289293
let bound_vars = clean_bound_vars(sig.bound_vars());
290294

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

319323
clean::Enum {
320-
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates),
324+
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did),
321325
variants: cx.tcx.adt_def(did).variants().iter().map(|v| clean_variant_def(v, cx)).collect(),
322326
}
323327
}
@@ -328,7 +332,7 @@ fn build_struct(cx: &mut DocContext<'_>, did: DefId) -> clean::Struct {
328332

329333
clean::Struct {
330334
ctor_kind: variant.ctor_kind(),
331-
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates),
335+
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did),
332336
fields: variant.fields.iter().map(|x| clean_middle_field(x, cx)).collect(),
333337
}
334338
}
@@ -337,7 +341,7 @@ fn build_union(cx: &mut DocContext<'_>, did: DefId) -> clean::Union {
337341
let predicates = cx.tcx.explicit_predicates_of(did);
338342
let variant = cx.tcx.adt_def(did).non_enum_variant();
339343

340-
let generics = clean_ty_generics(cx, cx.tcx.generics_of(did), predicates);
344+
let generics = clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did);
341345
let fields = variant.fields.iter().map(|x| clean_middle_field(x, cx)).collect();
342346
clean::Union { generics, fields }
343347
}
@@ -354,7 +358,7 @@ fn build_type_alias(
354358

355359
Box::new(clean::TypeAlias {
356360
type_,
357-
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates),
361+
generics: clean_ty_generics(cx, cx.tcx.generics_of(did), predicates, did),
358362
inner_type,
359363
item_type: None,
360364
})
@@ -532,7 +536,7 @@ pub(crate) fn build_impl(
532536
})
533537
.map(|item| clean_impl_item(item, cx))
534538
.collect::<Vec<_>>(),
535-
clean_generics(impl_.generics, cx),
539+
clean_generics(impl_.generics, cx, did),
536540
),
537541
None => (
538542
tcx.associated_items(did)
@@ -560,7 +564,7 @@ pub(crate) fn build_impl(
560564
.map(|item| clean_middle_assoc_item(item, cx))
561565
.collect::<Vec<_>>(),
562566
clean::enter_impl_trait(cx, |cx| {
563-
clean_ty_generics(cx, tcx.generics_of(did), predicates)
567+
clean_ty_generics(cx, tcx.generics_of(did), predicates, did)
564568
}),
565569
),
566570
};
@@ -718,8 +722,12 @@ pub(crate) fn print_inlined_const(tcx: TyCtxt<'_>, did: DefId) -> String {
718722
}
719723

720724
fn build_const(cx: &mut DocContext<'_>, def_id: DefId) -> clean::Constant {
721-
let mut generics =
722-
clean_ty_generics(cx, cx.tcx.generics_of(def_id), cx.tcx.explicit_predicates_of(def_id));
725+
let mut generics = clean_ty_generics(
726+
cx,
727+
cx.tcx.generics_of(def_id),
728+
cx.tcx.explicit_predicates_of(def_id),
729+
def_id,
730+
);
723731
clean::simplify::move_bounds_to_generic_parameters(&mut generics);
724732

725733
clean::Constant {

0 commit comments

Comments
 (0)