mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-24 07:44:10 +00:00
b0dadff6de
Include the computed alignment of the violating field when rejecting transparent types with non-trivially aligned ZSTs. ZST member fields in transparent types must have an alignment of 1 (to ensure it does not raise the layout requirements of the transparent field). The current error message looks like this: LL | struct Foobar(u32, [u32; 0]); | ^^^^^^^^ has alignment larger than 1 This patch changes the report to include the alignment of the violating field: LL | struct Foobar(u32, [u32; 0]); | ^^^^^^^^ has alignment of 4, which is larger than 1 In case of unknown alignments, it will yield: LL | struct Foobar<T>(u32, [T; 0]); | ^^^^^^ may have alignment larger than 1 This allows developers to get a better grasp why a specific field is rejected. Knowing the alignment of the violating field makes it easier to judge where that alignment-requirement originates, and thus hopefully provide better hints on how to mitigate the problem. This idea was proposed in 2022 in #98071 as part of a bigger change. This commit simply extracts this error-message change, to decouple it from the other diagnostic improvements. |
||
---|---|---|
.. | ||
auxiliary | ||
16-bit-repr-c-enum.rs | ||
align-with-extern-c-fn.rs | ||
aligned_enum_cast.rs | ||
attr-usage-repr.rs | ||
attr-usage-repr.stderr | ||
invalid_repr_list_help.rs | ||
invalid_repr_list_help.stderr | ||
issue-83505-repr-simd.rs | ||
issue-83505-repr-simd.stderr | ||
issue-83921-ice.rs | ||
issue-83921-ice.stderr | ||
repr_c_int_align.rs | ||
repr-align-assign.fixed | ||
repr-align-assign.rs | ||
repr-align-assign.stderr | ||
repr-align.rs | ||
repr-align.stderr | ||
repr-disallow-on-variant.rs | ||
repr-disallow-on-variant.stderr | ||
repr-packed-contains-align.rs | ||
repr-packed-contains-align.stderr | ||
repr-transparent-issue-87496.rs | ||
repr-transparent-issue-87496.stderr | ||
repr-transparent-non-exhaustive.rs | ||
repr-transparent-non-exhaustive.stderr | ||
repr-transparent-other-items.rs | ||
repr-transparent-other-items.stderr | ||
repr-transparent-other-reprs.rs | ||
repr-transparent-other-reprs.stderr | ||
repr-transparent.rs | ||
repr-transparent.stderr | ||
repr.rs | ||
repr.stderr | ||
transparent-enum-too-many-variants.rs | ||
transparent-enum-too-many-variants.stderr |