From f2d81defa1e78921db326835fc9a7e21475868d1 Mon Sep 17 00:00:00 2001 From: Luqman Aden Date: Wed, 30 Nov 2022 23:16:57 -0800 Subject: [PATCH] Add additional test case for repr(packed) allowing union abi opt to kick in. --- tests/ui/layout/debug.rs | 4 ++++ tests/ui/layout/debug.stderr | 31 +++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/tests/ui/layout/debug.rs b/tests/ui/layout/debug.rs index 78dbb1a299e2..46171880a6fe 100644 --- a/tests/ui/layout/debug.rs +++ b/tests/ui/layout/debug.rs @@ -56,6 +56,10 @@ union P3 { x: F32x4 } //~ ERROR: layout_of #[repr(packed(1))] union P4 { x: E } //~ ERROR: layout_of +#[rustc_layout(debug)] +#[repr(packed(1))] +union P5 { zst: [u16; 0], byte: u8 } //~ ERROR: layout_of + #[rustc_layout(debug)] type X = std::mem::MaybeUninit; //~ ERROR: layout_of diff --git a/tests/ui/layout/debug.stderr b/tests/ui/layout/debug.stderr index c296c2ba797c..b9fa1b299e96 100644 --- a/tests/ui/layout/debug.stderr +++ b/tests/ui/layout/debug.stderr @@ -461,6 +461,33 @@ error: layout_of(P4) = Layout { LL | union P4 { x: E } | ^^^^^^^^ +error: layout_of(P5) = Layout { + size: Size(1 bytes), + align: AbiAndPrefAlign { + abi: Align(1 bytes), + pref: $PREF_ALIGN, + }, + abi: Scalar( + Union { + value: Int( + I8, + false, + ), + }, + ), + fields: Union( + 2, + ), + largest_niche: None, + variants: Single { + index: 0, + }, + } + --> $DIR/debug.rs:61:1 + | +LL | union P5 { zst: [u16; 0], byte: u8 } + | ^^^^^^^^ + error: layout_of(std::mem::MaybeUninit) = Layout { size: Size(1 bytes), align: AbiAndPrefAlign { @@ -483,10 +510,10 @@ error: layout_of(std::mem::MaybeUninit) = Layout { index: 0, }, } - --> $DIR/debug.rs:60:1 + --> $DIR/debug.rs:64:1 | LL | type X = std::mem::MaybeUninit; | ^^^^^^ -error: aborting due to 13 previous errors +error: aborting due to 14 previous errors