diff options
| author | Noah Lev <camelidcamel@gmail.com> | 2021-09-01 15:26:07 -0700 |
|---|---|---|
| committer | Noah Lev <camelidcamel@gmail.com> | 2021-09-03 14:34:58 -0700 |
| commit | 5c0e6c18e1b2d71697ccfaf8e593922b7d220c2f (patch) | |
| tree | b5949549b7e784968b26ae1ee85494812a25b273 | |
| parent | fcce644119cf4e8e36001368e514bb5ed67cb855 (diff) | |
| download | rust-5c0e6c18e1b2d71697ccfaf8e593922b7d220c2f.tar.gz rust-5c0e6c18e1b2d71697ccfaf8e593922b7d220c2f.zip | |
rustdoc: Box `GenericArg::Const` to reduce enum size
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/clean/types.rs | 7 | ||||
| -rw-r--r-- | src/librustdoc/clean/utils.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/json/conversions.rs | 2 |
4 files changed, 9 insertions, 4 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index bde821c5d9c..b018ef405c0 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1787,7 +1787,7 @@ impl Clean<GenericArgs> 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 36b862120a2..47176070f65 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<Constant>), 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<GenericArg>, bindings: Vec<TypeBinding> }, diff --git a/src/librustdoc/clean/utils.rs b/src/librustdoc/clean/utils.rs index bdfe3ffc13f..de2cd60d2ed 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 228d718411f..46eeee8e3a4 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -139,7 +139,7 @@ impl FromWithTcx<clean::GenericArg> 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, } } |
