From b4e68e212ece6896ea574c6345e14d4350c5c517 Mon Sep 17 00:00:00 2001 From: Bastian Kersting Date: Wed, 2 Jul 2025 20:33:28 +0300 Subject: [PATCH] Respect endianness correctly in CheckEnums test suite The endianness can change the test expectation for the enum check. This change is fixing the failing tests on big endian by changing the tests so that they behave the same as on little endian. --- ...non_enum_break.rs => convert_non_integer_break.rs} | 7 +++---- ...he_break.rs => convert_non_integer_niche_break.rs} | 0 ...um_niche_ok.rs => convert_non_integer_niche_ok.rs} | 0 ...nvert_non_enum_ok.rs => convert_non_integer_ok.rs} | 7 +++---- tests/ui/mir/enum/niche_option_tuple_break.rs | 11 ++++++----- tests/ui/mir/enum/with_niche_int_break.rs | 4 ++-- 6 files changed, 14 insertions(+), 15 deletions(-) rename tests/ui/mir/enum/{convert_non_enum_break.rs => convert_non_integer_break.rs} (84%) rename tests/ui/mir/enum/{convert_non_enum_niche_break.rs => convert_non_integer_niche_break.rs} (100%) rename tests/ui/mir/enum/{convert_non_enum_niche_ok.rs => convert_non_integer_niche_ok.rs} (100%) rename tests/ui/mir/enum/{convert_non_enum_ok.rs => convert_non_integer_ok.rs} (82%) diff --git a/tests/ui/mir/enum/convert_non_enum_break.rs b/tests/ui/mir/enum/convert_non_integer_break.rs similarity index 84% rename from tests/ui/mir/enum/convert_non_enum_break.rs rename to tests/ui/mir/enum/convert_non_integer_break.rs index de062c39907a7..29795190bf6a0 100644 --- a/tests/ui/mir/enum/convert_non_enum_break.rs +++ b/tests/ui/mir/enum/convert_non_integer_break.rs @@ -1,6 +1,6 @@ //@ run-fail //@ compile-flags: -C debug-assertions -//@ error-pattern: trying to construct an enum from an invalid value 0x10000 +//@ error-pattern: trying to construct an enum from an invalid value #[allow(dead_code)] #[repr(u32)] @@ -11,10 +11,9 @@ enum Foo { #[allow(dead_code)] struct Bar { - a: u16, - b: u16, + a: u32, } fn main() { - let _val: Foo = unsafe { std::mem::transmute::<_, Foo>(Bar { a: 0, b: 1 }) }; + let _val: Foo = unsafe { std::mem::transmute::<_, Foo>(Bar { a: 3 }) }; } diff --git a/tests/ui/mir/enum/convert_non_enum_niche_break.rs b/tests/ui/mir/enum/convert_non_integer_niche_break.rs similarity index 100% rename from tests/ui/mir/enum/convert_non_enum_niche_break.rs rename to tests/ui/mir/enum/convert_non_integer_niche_break.rs diff --git a/tests/ui/mir/enum/convert_non_enum_niche_ok.rs b/tests/ui/mir/enum/convert_non_integer_niche_ok.rs similarity index 100% rename from tests/ui/mir/enum/convert_non_enum_niche_ok.rs rename to tests/ui/mir/enum/convert_non_integer_niche_ok.rs diff --git a/tests/ui/mir/enum/convert_non_enum_ok.rs b/tests/ui/mir/enum/convert_non_integer_ok.rs similarity index 82% rename from tests/ui/mir/enum/convert_non_enum_ok.rs rename to tests/ui/mir/enum/convert_non_integer_ok.rs index 37fc64342ca93..c98315313863d 100644 --- a/tests/ui/mir/enum/convert_non_enum_ok.rs +++ b/tests/ui/mir/enum/convert_non_integer_ok.rs @@ -10,11 +10,10 @@ enum Foo { #[allow(dead_code)] struct Bar { - a: u16, - b: u16, + a: u32, } fn main() { - let _val: Foo = unsafe { std::mem::transmute::<_, Foo>(Bar { a: 0, b: 0 }) }; - let _val: Foo = unsafe { std::mem::transmute::<_, Foo>(Bar { a: 1, b: 0 }) }; + let _val: Foo = unsafe { std::mem::transmute::<_, Foo>(Bar { a: 0 }) }; + let _val: Foo = unsafe { std::mem::transmute::<_, Foo>(Bar { a: 1 }) }; } diff --git a/tests/ui/mir/enum/niche_option_tuple_break.rs b/tests/ui/mir/enum/niche_option_tuple_break.rs index 43eef3a4cc5f0..affdc4784a3f4 100644 --- a/tests/ui/mir/enum/niche_option_tuple_break.rs +++ b/tests/ui/mir/enum/niche_option_tuple_break.rs @@ -1,8 +1,9 @@ //@ run-fail //@ compile-flags: -C debug-assertions -//@ error-pattern: trying to construct an enum from an invalid value 0x3 +//@ error-pattern: trying to construct an enum from an invalid value #[allow(dead_code)] +#[repr(u32)] enum Foo { A, B, @@ -10,11 +11,11 @@ enum Foo { #[allow(dead_code)] struct Bar { - a: usize, - b: usize, + a: u32, + b: u32, } fn main() { - let _val: Option<(usize, Foo)> = - unsafe { std::mem::transmute::<_, Option<(usize, Foo)>>(Bar { a: 3, b: 3 }) }; + let _val: Option<(u32, Foo)> = + unsafe { std::mem::transmute::<_, Option<(u32, Foo)>>(Bar { a: 3, b: 3 }) }; } diff --git a/tests/ui/mir/enum/with_niche_int_break.rs b/tests/ui/mir/enum/with_niche_int_break.rs index 0ec60a33564af..6a97eaa8f4f5b 100644 --- a/tests/ui/mir/enum/with_niche_int_break.rs +++ b/tests/ui/mir/enum/with_niche_int_break.rs @@ -1,6 +1,6 @@ //@ run-fail //@ compile-flags: -C debug-assertions -//@ error-pattern: trying to construct an enum from an invalid value 0x4 +//@ error-pattern: trying to construct an enum from an invalid value #[allow(dead_code)] #[repr(u16)] @@ -17,5 +17,5 @@ enum Nested { } fn main() { - let _val: Nested = unsafe { std::mem::transmute::(4) }; + let _val: Nested = unsafe { std::mem::transmute::(u32::MAX) }; }