From 2bd947998497c0bf2dc91152528eb654bbe6091b Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Tue, 9 Aug 2022 09:40:44 -0400 Subject: [PATCH] compare with-flag to without-flag --- .../consts/extra-const-ub/detect-extra-ub.rs | 24 ++++++++++--------- ...tderr => detect-extra-ub.with_flag.stderr} | 16 ++++++------- 2 files changed, 21 insertions(+), 19 deletions(-) rename src/test/ui/consts/extra-const-ub/{detect-extra-ub.stderr => detect-extra-ub.with_flag.stderr} (91%) diff --git a/src/test/ui/consts/extra-const-ub/detect-extra-ub.rs b/src/test/ui/consts/extra-const-ub/detect-extra-ub.rs index ebbe315b8f81..97c9e1505197 100644 --- a/src/test/ui/consts/extra-const-ub/detect-extra-ub.rs +++ b/src/test/ui/consts/extra-const-ub/detect-extra-ub.rs @@ -1,36 +1,38 @@ -// compile-flags: -Zextra-const-ub-checks +// revisions: no_flag with_flag +// [no_flag] check-pass +// [with_flag] compile-flags: -Zextra-const-ub-checks #![feature(const_ptr_read)] use std::mem::transmute; const INVALID_BOOL: () = unsafe { let _x: bool = transmute(3u8); - //~^ ERROR: evaluation of constant value failed - //~| invalid value + //[with_flag]~^ ERROR: evaluation of constant value failed + //[with_flag]~| invalid value }; const INVALID_PTR_IN_INT: () = unsafe { let _x: usize = transmute(&3u8); - //~^ ERROR: evaluation of constant value failed - //~| invalid value + //[with_flag]~^ ERROR: evaluation of constant value failed + //[with_flag]~| invalid value }; const INVALID_SLICE_TO_USIZE_TRANSMUTE: () = unsafe { let x: &[u8] = &[0; 32]; let _x: (usize, usize) = transmute(x); - //~^ ERROR: evaluation of constant value failed - //~| invalid value + //[with_flag]~^ ERROR: evaluation of constant value failed + //[with_flag]~| invalid value }; const UNALIGNED_PTR: () = unsafe { let _x: &u32 = transmute(&[0u8; 4]); - //~^ ERROR: evaluation of constant value failed - //~| invalid value + //[with_flag]~^ ERROR: evaluation of constant value failed + //[with_flag]~| invalid value }; const UNALIGNED_READ: () = { - INNER; //~ERROR any use of this value will cause an error - //~| previously accepted + INNER; //[with_flag]~ERROR any use of this value will cause an error + //[with_flag]~| previously accepted // There is an error here but its span is in the standard library so we cannot match it... // so we have this in a *nested* const, such that the *outer* const fails to use it. const INNER: () = unsafe { diff --git a/src/test/ui/consts/extra-const-ub/detect-extra-ub.stderr b/src/test/ui/consts/extra-const-ub/detect-extra-ub.with_flag.stderr similarity index 91% rename from src/test/ui/consts/extra-const-ub/detect-extra-ub.stderr rename to src/test/ui/consts/extra-const-ub/detect-extra-ub.with_flag.stderr index 66634f3dd569..1706db7ac43c 100644 --- a/src/test/ui/consts/extra-const-ub/detect-extra-ub.stderr +++ b/src/test/ui/consts/extra-const-ub/detect-extra-ub.with_flag.stderr @@ -1,23 +1,23 @@ error[E0080]: evaluation of constant value failed - --> $DIR/detect-extra-ub.rs:7:20 + --> $DIR/detect-extra-ub.rs:9:20 | LL | let _x: bool = transmute(3u8); | ^^^^^^^^^^^^^^ constructing invalid value: encountered 0x03, but expected a boolean error[E0080]: evaluation of constant value failed - --> $DIR/detect-extra-ub.rs:13:21 + --> $DIR/detect-extra-ub.rs:15:21 | LL | let _x: usize = transmute(&3u8); | ^^^^^^^^^^^^^^^ constructing invalid value: encountered (potentially part of) a pointer, but expected plain (non-pointer) bytes error[E0080]: evaluation of constant value failed - --> $DIR/detect-extra-ub.rs:20:30 + --> $DIR/detect-extra-ub.rs:22:30 | LL | let _x: (usize, usize) = transmute(x); | ^^^^^^^^^^^^ constructing invalid value at .0: encountered (potentially part of) a pointer, but expected plain (non-pointer) bytes error[E0080]: evaluation of constant value failed - --> $DIR/detect-extra-ub.rs:26:20 + --> $DIR/detect-extra-ub.rs:28:20 | LL | let _x: &u32 = transmute(&[0u8; 4]); | ^^^^^^^^^^^^^^^^^^^^ constructing invalid value: encountered an unaligned reference (required 4 byte alignment but found 1) @@ -36,13 +36,13 @@ LL | copy_nonoverlapping(src, tmp.as_mut_ptr(), 1); LL | unsafe { read(self) } | ---------- inside `ptr::const_ptr::::read` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL | - ::: $DIR/detect-extra-ub.rs:39:9 + ::: $DIR/detect-extra-ub.rs:41:9 | LL | ptr.read(); - | ---------- inside `INNER` at $DIR/detect-extra-ub.rs:39:9 + | ---------- inside `INNER` at $DIR/detect-extra-ub.rs:41:9 error: any use of this value will cause an error - --> $DIR/detect-extra-ub.rs:32:5 + --> $DIR/detect-extra-ub.rs:34:5 | LL | const UNALIGNED_READ: () = { | ------------------------ @@ -58,7 +58,7 @@ error: aborting due to 6 previous errors For more information about this error, try `rustc --explain E0080`. Future incompatibility report: Future breakage diagnostic: error: any use of this value will cause an error - --> $DIR/detect-extra-ub.rs:32:5 + --> $DIR/detect-extra-ub.rs:34:5 | LL | const UNALIGNED_READ: () = { | ------------------------