diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index bde821c5d9cd0..b018ef405c089 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1787,7 +1787,7 @@ impl Clean for hir::GenericArgs<'_> { } hir::GenericArg::Lifetime(_) => GenericArg::Lifetime(Lifetime::elided()), hir::GenericArg::Type(ty) => GenericArg::Type(ty.clean(cx)), - hir::GenericArg::Const(ct) => GenericArg::Const(ct.clean(cx)), + hir::GenericArg::Const(ct) => GenericArg::Const(Box::new(ct.clean(cx))), hir::GenericArg::Infer(_inf) => GenericArg::Infer, }) .collect(), diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index 36b862120a27b..47176070f657a 100644 --- a/src/librustdoc/clean/types.rs +++ b/src/librustdoc/clean/types.rs @@ -2012,10 +2012,15 @@ impl Path { crate enum GenericArg { Lifetime(Lifetime), Type(Type), - Const(Constant), + Const(Box), Infer, } +// `GenericArg` can occur many times in a single `Path`, so make sure it +// doesn't increase in size unexpectedly. +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] +rustc_data_structures::static_assert_size!(GenericArg, 80); + #[derive(Clone, PartialEq, Eq, Debug, Hash)] crate enum GenericArgs { AngleBracketed { args: Vec, bindings: Vec }, diff --git a/src/librustdoc/clean/utils.rs b/src/librustdoc/clean/utils.rs index bdfe3ffc13f13..de2cd60d2edcd 100644 --- a/src/librustdoc/clean/utils.rs +++ b/src/librustdoc/clean/utils.rs @@ -121,7 +121,7 @@ fn external_generic_args( ty_kind = Some(ty.kind()); Some(GenericArg::Type(ty.clean(cx))) } - GenericArgKind::Const(ct) => Some(GenericArg::Const(ct.clean(cx))), + GenericArgKind::Const(ct) => Some(GenericArg::Const(Box::new(ct.clean(cx)))), }) .collect(); diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index 228d718411f14..46eeee8e3a490 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -139,7 +139,7 @@ impl FromWithTcx for GenericArg { match arg { Lifetime(l) => GenericArg::Lifetime(l.0.to_string()), Type(t) => GenericArg::Type(t.into_tcx(tcx)), - Const(c) => GenericArg::Const(c.into_tcx(tcx)), + Const(box c) => GenericArg::Const(c.into_tcx(tcx)), Infer => GenericArg::Infer, } }