diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:58 +0000 |
commit | a4b7ed7a42c716ab9f05e351f003d589124fd55d (patch) | |
tree | b620cd3f223850b28716e474e80c58059dca5dd4 /src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs | |
parent | Adding upstream version 1.67.1+dfsg1. (diff) | |
download | rustc-a4b7ed7a42c716ab9f05e351f003d589124fd55d.tar.xz rustc-a4b7ed7a42c716ab9f05e351f003d589124fd55d.zip |
Adding upstream version 1.68.2+dfsg1.upstream/1.68.2+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs')
-rw-r--r-- | src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs b/src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs deleted file mode 100644 index bf4f14f4d..000000000 --- a/src/test/ui/consts/miri_unleashed/const_refers_to_static_cross_crate.rs +++ /dev/null @@ -1,76 +0,0 @@ -// compile-flags: -Zunleash-the-miri-inside-of-you -// aux-build:static_cross_crate.rs -// stderr-per-bitwidth -#![feature(exclusive_range_pattern, half_open_range_patterns_in_slices)] - -extern crate static_cross_crate; - -// Sneaky: reference to a mutable static. -// Allowing this would be a disaster for pattern matching, we could violate exhaustiveness checking! -const SLICE_MUT: &[u8; 1] = { //~ ERROR undefined behavior to use this value -//~| encountered a reference pointing to a static variable - unsafe { &static_cross_crate::ZERO } -}; - -const U8_MUT: &u8 = { //~ ERROR undefined behavior to use this value -//~| encountered a reference pointing to a static variable - unsafe { &static_cross_crate::ZERO[0] } -}; - -// Also test indirection that reads from other static. -const U8_MUT2: &u8 = { - unsafe { &(*static_cross_crate::ZERO_REF)[0] } - //~^ ERROR evaluation of constant value failed - //~| constant accesses static -}; -const U8_MUT3: &u8 = { - unsafe { match static_cross_crate::OPT_ZERO { Some(ref u) => u, None => panic!() } } - //~^ ERROR evaluation of constant value failed - //~| constant accesses static -}; - -pub fn test(x: &[u8; 1]) -> bool { - match x { - SLICE_MUT => true, - //~^ ERROR could not evaluate constant pattern - //~| ERROR could not evaluate constant pattern - &[1..] => false, - } -} - -pub fn test2(x: &u8) -> bool { - match x { - U8_MUT => true, - //~^ ERROR could not evaluate constant pattern - //~| ERROR could not evaluate constant pattern - &(1..) => false, - } -} - -// We need to use these *in a pattern* to trigger the failure... likely because -// the errors above otherwise stop compilation too early? -pub fn test3(x: &u8) -> bool { - match x { - U8_MUT2 => true, - //~^ ERROR could not evaluate constant pattern - //~| ERROR could not evaluate constant pattern - &(1..) => false, - } -} -pub fn test4(x: &u8) -> bool { - match x { - U8_MUT3 => true, - //~^ ERROR could not evaluate constant pattern - //~| ERROR could not evaluate constant pattern - &(1..) => false, - } -} - -fn main() { - unsafe { - static_cross_crate::ZERO[0] = 1; - } - // Now the pattern is not exhaustive any more! - test(&[0]); - test2(&0); -} |