Taking a Diagnostic by move would break the usual pattern `diag.label(..).emit()`.
in_band_lifetimes
rustc_codegen_ssa
AdtDef
LayoutOf
ty::layout