diff options
| author | Connor Horman <chorman64@gmail.com> | 2024-11-22 19:32:02 -0500 |
|---|---|---|
| committer | Connor Horman <chorman64@gmail.com> | 2024-11-22 19:32:02 -0500 |
| commit | 3d67fd4cf4dfcdfb93e880a09ed7d41d95170226 (patch) | |
| tree | 798357a86f31bcb287ce187f36101a6891404aea /tests/ui/layout/aggregate-lang/struct-align.rs | |
| parent | a7d9ebdf088f166e91759ec5b3b0625e3c1d0c82 (diff) | |
| download | rust-3d67fd4cf4dfcdfb93e880a09ed7d41d95170226.tar.gz rust-3d67fd4cf4dfcdfb93e880a09ed7d41d95170226.zip | |
Add language tests for aggregate types
Diffstat (limited to 'tests/ui/layout/aggregate-lang/struct-align.rs')
| -rw-r--r-- | tests/ui/layout/aggregate-lang/struct-align.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/ui/layout/aggregate-lang/struct-align.rs b/tests/ui/layout/aggregate-lang/struct-align.rs new file mode 100644 index 00000000000..931d686798d --- /dev/null +++ b/tests/ui/layout/aggregate-lang/struct-align.rs @@ -0,0 +1,31 @@ +//@ run-pass +//@ reference: layout.aggregate.struct-size-align +//@ edition: 2018 + +#[repr(align(64))] +#[derive(Copy, Clone)] +#[allow(dead_code)] +pub struct Overaligned(u8); + +#[allow(dead_code)] +struct ReprRustStruct { + x: i32, + y: [u32; 4], + z: f32, + a: u128, + b: Overaligned, +} + +#[cfg_attr(test, test)] +fn test_alignment_contains_all_fields() { + assert!(core::mem::align_of::<ReprRustStruct>() >= core::mem::align_of::<i32>()); + assert!(core::mem::align_of::<ReprRustStruct>() >= core::mem::align_of::<[u32; 4]>()); + assert!(core::mem::align_of::<ReprRustStruct>() >= core::mem::align_of::<f32>()); + assert!(core::mem::align_of::<ReprRustStruct>() >= core::mem::align_of::<u128>()); + assert!(core::mem::align_of::<ReprRustStruct>() >= core::mem::align_of::<Overaligned>()); +} + +#[cfg(not(test))] +fn main() { + test_alignment_contains_all_fields(); +} |
