From fc2aa3fe0ec13c8d6150a877d7193473aabc58c9 Mon Sep 17 00:00:00 2001 From: memoryruins Date: Mon, 29 Oct 2018 00:09:32 -0400 Subject: [PATCH] Add UI test for #49296 --- src/test/ui/consts/const-eval/issue-49296.rs | 23 +++++++++++++++++++ .../ui/consts/const-eval/issue-49296.stderr | 12 ++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/test/ui/consts/const-eval/issue-49296.rs create mode 100644 src/test/ui/consts/const-eval/issue-49296.stderr diff --git a/src/test/ui/consts/const-eval/issue-49296.rs b/src/test/ui/consts/const-eval/issue-49296.rs new file mode 100644 index 0000000000000..a7c3c5318d430 --- /dev/null +++ b/src/test/ui/consts/const-eval/issue-49296.rs @@ -0,0 +1,23 @@ +// issue-49296: Unsafe shenigans in constants can result in missing errors + +#![feature(const_fn)] +#![feature(const_fn_union)] + +const unsafe fn transmute(t: T) -> U { + union Transmute { + from: T, + to: U, + } + + Transmute { from: t }.to +} + +const fn wat(x: u64) -> &'static u64 { + unsafe { transmute(&x) } +} +const X: u64 = *wat(42); +//~^ ERROR any use of this value will cause an error + +fn main() { + println!("{}", X); +} diff --git a/src/test/ui/consts/const-eval/issue-49296.stderr b/src/test/ui/consts/const-eval/issue-49296.stderr new file mode 100644 index 0000000000000..37462db4c965e --- /dev/null +++ b/src/test/ui/consts/const-eval/issue-49296.stderr @@ -0,0 +1,12 @@ +error: any use of this value will cause an error + --> $DIR/issue-49296.rs:18:1 + | +LL | const X: u64 = *wat(42); + | ^^^^^^^^^^^^^^^--------^ + | | + | dangling pointer was dereferenced + | + = note: #[deny(const_err)] on by default + +error: aborting due to previous error +