rust/tests/ui/repr
David Rheinsberg b0dadff6de error/E0691: include alignment in error message
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.
2023-07-21 11:04:16 +02:00
..
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