diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
commit | 218caa410aa38c29984be31a5229b9fa717560ee (patch) | |
tree | c54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/unsafe/union.rs | |
parent | Releasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/unsafe/union.rs')
-rw-r--r-- | src/test/ui/unsafe/union.rs | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/src/test/ui/unsafe/union.rs b/src/test/ui/unsafe/union.rs deleted file mode 100644 index 4338d78ea..000000000 --- a/src/test/ui/unsafe/union.rs +++ /dev/null @@ -1,53 +0,0 @@ -// revisions: mir thir -// [thir]compile-flags: -Z thir-unsafeck - -union Foo { - bar: i8, - zst: (), - pizza: Pizza, -} - -#[derive(Clone, Copy)] -struct Pizza { - topping: Option<PizzaTopping> -} - -#[allow(dead_code)] -#[derive(Clone, Copy)] -enum PizzaTopping { - Cheese, - Pineapple, -} - -fn do_nothing(_x: &mut Foo) {} - -pub fn main() { - let mut foo = Foo { bar: 5 }; - do_nothing(&mut foo); - - // This is UB, so this test isn't run - match foo { - Foo { bar: _a } => {}, //~ ERROR access to union field is unsafe - } - match foo { //[mir]~ ERROR access to union field is unsafe - Foo { - pizza: Pizza { //[thir]~ ERROR access to union field is unsafe - topping: Some(PizzaTopping::Cheese) | Some(PizzaTopping::Pineapple) | None - } - } => {}, - } - - // MIR unsafeck incorrectly thinks that no unsafe block is needed to do these - match foo { - Foo { zst: () } => {}, //[thir]~ ERROR access to union field is unsafe - } - match foo { - Foo { pizza: Pizza { .. } } => {}, //[thir]~ ERROR access to union field is unsafe - } - - // binding to wildcard is okay - match foo { - Foo { bar: _ } => {}, - } - let Foo { bar: _ } = foo; -} |