Skip to content

Commit

Permalink
get rid of a bunch of unnecessary NOTE in const tests
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed May 15, 2021
1 parent a1507b8 commit f1fdbe2
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 81 deletions.
6 changes: 2 additions & 4 deletions src/test/ui/consts/const-eval/dangling.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@
use std::mem;

// Make sure we error with the right kind of error on a too large slice.
const TEST: () = { unsafe { //~ NOTE
const TEST: () = { unsafe {
let slice: *const [u8] = mem::transmute((1usize, usize::MAX));
let _val = &*slice; //~ ERROR: any use of this value will cause an error
//~| NOTE: slice is bigger than largest supported object
//~| on by default
//~| slice is bigger than largest supported object
//~| WARN this was previously accepted by the compiler but is being phased out
//~| NOTE
} };

fn main() {}
1 change: 0 additions & 1 deletion src/test/ui/consts/const-eval/dangling.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ LL | | let slice: *const [u8] = mem::transmute((1usize, usize::MAX));
LL | | let _val = &*slice;
| | ^^^^^^^ invalid metadata in wide pointer: slice is bigger than largest supported object
LL | |
... |
LL | |
LL | | } };
| |____-
Expand Down
4 changes: 1 addition & 3 deletions src/test/ui/consts/const-points-to-static.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@

const TEST: &u8 = &MY_STATIC;
//~^ ERROR it is undefined behavior to use this value
//~| NOTE encountered a reference pointing to a static variable
//~| NOTE undefined behavior
//~| NOTE the raw bytes of the constant
//~| encountered a reference pointing to a static variable

static MY_STATIC: u8 = 4;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ error[E0080]: it is undefined behavior to use this value
|
LL | / const REF_INTERIOR_MUT: &usize = {
LL | |
LL | |
LL | |
LL | | static FOO: AtomicUsize = AtomicUsize::new(0);
LL | | unsafe { &*(&FOO as *const _ as *const usize) }
LL | | };
Expand All @@ -16,12 +14,10 @@ LL | | };
}

error[E0080]: it is undefined behavior to use this value
--> $DIR/const_refers_to_static2.rs:20:1
--> $DIR/const_refers_to_static2.rs:18:1
|
LL | / const READ_IMMUT: &usize = {
LL | |
LL | |
LL | |
LL | | static FOO: usize = 0;
LL | | &FOO
LL | | };
Expand All @@ -35,17 +31,17 @@ LL | | };
warning: skipping const checks
|
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static2.rs:16:18
--> $DIR/const_refers_to_static2.rs:14:18
|
LL | unsafe { &*(&FOO as *const _ as *const usize) }
| ^^^
help: skipping check for `const_raw_ptr_deref` feature
--> $DIR/const_refers_to_static2.rs:16:14
--> $DIR/const_refers_to_static2.rs:14:14
|
LL | unsafe { &*(&FOO as *const _ as *const usize) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static2.rs:25:6
--> $DIR/const_refers_to_static2.rs:21:6
|
LL | &FOO
| ^^^
Expand Down
8 changes: 2 additions & 6 deletions src/test/ui/consts/miri_unleashed/const_refers_to_static2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,14 @@ use std::sync::atomic::Ordering;
// so they cause an immediate error when *defining* the const.

const REF_INTERIOR_MUT: &usize = { //~ ERROR undefined behavior to use this value
//~| NOTE encountered a reference pointing to a static variable
//~| NOTE undefined behavior
//~| NOTE the raw bytes of the constant
//~| encountered a reference pointing to a static variable
static FOO: AtomicUsize = AtomicUsize::new(0);
unsafe { &*(&FOO as *const _ as *const usize) }
};

// ok some day perhaps
const READ_IMMUT: &usize = { //~ ERROR it is undefined behavior to use this value
//~| NOTE encountered a reference pointing to a static variable
//~| NOTE undefined behavior
//~| NOTE the raw bytes of the constant
//~| encountered a reference pointing to a static variable
static FOO: usize = 0;
&FOO
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ error[E0080]: it is undefined behavior to use this value
|
LL | / const SLICE_MUT: &[u8; 1] = {
LL | |
LL | |
LL | |
LL | | unsafe { &static_cross_crate::ZERO }
LL | | };
| |__^ type validation failed: encountered a reference pointing to a static variable
Expand All @@ -15,18 +13,16 @@ LL | | };
}

error: could not evaluate constant pattern
--> $DIR/const_refers_to_static_cross_crate.rs:47:9
--> $DIR/const_refers_to_static_cross_crate.rs:40:9
|
LL | SLICE_MUT => true,
| ^^^^^^^^^

error[E0080]: it is undefined behavior to use this value
--> $DIR/const_refers_to_static_cross_crate.rs:19:1
--> $DIR/const_refers_to_static_cross_crate.rs:17:1
|
LL | / const U8_MUT: &u8 = {
LL | |
LL | |
LL | |
LL | | unsafe { &static_cross_crate::ZERO[0] }
LL | | };
| |__^ type validation failed: encountered a reference pointing to a static variable
Expand All @@ -37,143 +33,141 @@ LL | | };
}

error: could not evaluate constant pattern
--> $DIR/const_refers_to_static_cross_crate.rs:56:9
--> $DIR/const_refers_to_static_cross_crate.rs:49:9
|
LL | U8_MUT => true,
| ^^^^^^

warning: any use of this value will cause an error
--> $DIR/const_refers_to_static_cross_crate.rs:29:15
--> $DIR/const_refers_to_static_cross_crate.rs:25:15
|
LL | / const U8_MUT2: &u8 = {
LL | | unsafe { &(*static_cross_crate::ZERO_REF)[0] }
| | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constant accesses static
LL | |
LL | |
LL | |
LL | |
LL | | };
| |__-
|
note: the lint level is defined here
--> $DIR/const_refers_to_static_cross_crate.rs:27:8
--> $DIR/const_refers_to_static_cross_crate.rs:23:8
|
LL | #[warn(const_err)]
| ^^^^^^^^^
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>

error: could not evaluate constant pattern
--> $DIR/const_refers_to_static_cross_crate.rs:67:9
--> $DIR/const_refers_to_static_cross_crate.rs:60:9
|
LL | U8_MUT2 => true,
| ^^^^^^^

warning: any use of this value will cause an error
--> $DIR/const_refers_to_static_cross_crate.rs:37:51
--> $DIR/const_refers_to_static_cross_crate.rs:32:51
|
LL | / const U8_MUT3: &u8 = {
LL | | unsafe { match static_cross_crate::OPT_ZERO { Some(ref u) => u, None => panic!() } }
| | ^^^^^^^^^^^ constant accesses static
LL | |
LL | |
... |
LL | |
LL | | };
| |__-
|
note: the lint level is defined here
--> $DIR/const_refers_to_static_cross_crate.rs:35:8
--> $DIR/const_refers_to_static_cross_crate.rs:30:8
|
LL | #[warn(const_err)]
| ^^^^^^^^^
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>

error: could not evaluate constant pattern
--> $DIR/const_refers_to_static_cross_crate.rs:75:9
--> $DIR/const_refers_to_static_cross_crate.rs:68:9
|
LL | U8_MUT3 => true,
| ^^^^^^^

error: could not evaluate constant pattern
--> $DIR/const_refers_to_static_cross_crate.rs:47:9
--> $DIR/const_refers_to_static_cross_crate.rs:40:9
|
LL | SLICE_MUT => true,
| ^^^^^^^^^

error: could not evaluate constant pattern
--> $DIR/const_refers_to_static_cross_crate.rs:56:9
--> $DIR/const_refers_to_static_cross_crate.rs:49:9
|
LL | U8_MUT => true,
| ^^^^^^

error: could not evaluate constant pattern
--> $DIR/const_refers_to_static_cross_crate.rs:67:9
--> $DIR/const_refers_to_static_cross_crate.rs:60:9
|
LL | U8_MUT2 => true,
| ^^^^^^^

error: could not evaluate constant pattern
--> $DIR/const_refers_to_static_cross_crate.rs:75:9
--> $DIR/const_refers_to_static_cross_crate.rs:68:9
|
LL | U8_MUT3 => true,
| ^^^^^^^

warning: skipping const checks
|
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:16:15
--> $DIR/const_refers_to_static_cross_crate.rs:14:15
|
LL | unsafe { &static_cross_crate::ZERO }
| ^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:16:15
--> $DIR/const_refers_to_static_cross_crate.rs:14:15
|
LL | unsafe { &static_cross_crate::ZERO }
| ^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:23:15
--> $DIR/const_refers_to_static_cross_crate.rs:19:15
|
LL | unsafe { &static_cross_crate::ZERO[0] }
| ^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:23:15
--> $DIR/const_refers_to_static_cross_crate.rs:19:15
|
LL | unsafe { &static_cross_crate::ZERO[0] }
| ^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:23:15
--> $DIR/const_refers_to_static_cross_crate.rs:19:15
|
LL | unsafe { &static_cross_crate::ZERO[0] }
| ^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:29:17
--> $DIR/const_refers_to_static_cross_crate.rs:25:17
|
LL | unsafe { &(*static_cross_crate::ZERO_REF)[0] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:37:20
--> $DIR/const_refers_to_static_cross_crate.rs:32:20
|
LL | unsafe { match static_cross_crate::OPT_ZERO { Some(ref u) => u, None => panic!() } }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:37:20
--> $DIR/const_refers_to_static_cross_crate.rs:32:20
|
LL | unsafe { match static_cross_crate::OPT_ZERO { Some(ref u) => u, None => panic!() } }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:37:20
--> $DIR/const_refers_to_static_cross_crate.rs:32:20
|
LL | unsafe { match static_cross_crate::OPT_ZERO { Some(ref u) => u, None => panic!() } }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: skipping check for `const_panic` feature
--> $DIR/const_refers_to_static_cross_crate.rs:37:77
--> $DIR/const_refers_to_static_cross_crate.rs:32:77
|
LL | unsafe { match static_cross_crate::OPT_ZERO { Some(ref u) => u, None => panic!() } }
| ^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/const_refers_to_static_cross_crate.rs:37:20
--> $DIR/const_refers_to_static_cross_crate.rs:32:20
|
LL | unsafe { match static_cross_crate::OPT_ZERO { Some(ref u) => u, None => panic!() } }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,36 +10,29 @@ 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
//~| NOTE encountered a reference pointing to a static variable
//~| NOTE undefined behavior
//~| NOTE the raw bytes of the constant
//~| encountered a reference pointing to a static variable
unsafe { &static_cross_crate::ZERO }
};

const U8_MUT: &u8 = { //~ ERROR undefined behavior to use this value
//~| NOTE encountered a reference pointing to a static variable
//~| NOTE undefined behavior
//~| NOTE the raw bytes of the constant
//~| encountered a reference pointing to a static variable
unsafe { &static_cross_crate::ZERO[0] }
};

// Also test indirection that reads from other static. This causes a const_err.
#[warn(const_err)] //~ NOTE
const U8_MUT2: &u8 = { //~ NOTE
#[warn(const_err)]
const U8_MUT2: &u8 = {
unsafe { &(*static_cross_crate::ZERO_REF)[0] }
//~^ WARN [const_err]
//~| NOTE constant accesses static
//~| constant accesses static
//~| WARN this was previously accepted by the compiler but is being phased out
//~| NOTE
};
#[warn(const_err)] //~ NOTE
const U8_MUT3: &u8 = { //~ NOTE
#[warn(const_err)]
const U8_MUT3: &u8 = {
unsafe { match static_cross_crate::OPT_ZERO { Some(ref u) => u, None => panic!() } }
//~^ WARN [const_err]
//~| NOTE constant accesses static
//~| NOTE in this expansion of panic!
//~| constant accesses static
//~| WARN this was previously accepted by the compiler but is being phased out
//~| NOTE
};

pub fn test(x: &[u8; 1]) -> bool {
Expand Down
12 changes: 2 additions & 10 deletions src/test/ui/consts/ptr_comparisons.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,26 +59,18 @@ check!(!eq, unsafe { (FOO as *const usize as *const u8).offset(3) }, 0);
// at runtime it would be zero and at compile-time it would not be zero.

const _: *const usize = unsafe { (FOO as *const usize).offset(2) };
//~^ NOTE

const _: *const u8 =
//~^ NOTE
unsafe { std::ptr::addr_of!((*(FOO as *const usize as *const [u8; 1000]))[999]) };
//~^ ERROR any use of this value will cause an error
//~| NOTE
//~| WARN this was previously accepted by the compiler but is being phased out
//~| NOTE

const _: usize = unsafe { std::mem::transmute::<*const usize, usize>(FOO) + 4 };
//~^ ERROR any use of this value will cause an error
//~| NOTE cannot cast pointer to integer
//~| NOTE
//~| cannot cast pointer to integer
//~| WARN this was previously accepted by the compiler but is being phased out
//~| NOTE

const _: usize = unsafe { *std::mem::transmute::<&&usize, &usize>(&FOO) + 4 };
//~^ ERROR any use of this value will cause an error
//~| NOTE cannot cast pointer to integer
//~| NOTE
//~| cannot cast pointer to integer
//~| WARN this was previously accepted by the compiler but is being phased out
//~| NOTE
7 changes: 3 additions & 4 deletions src/test/ui/consts/ptr_comparisons.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@ LL | const _: *const usize = unsafe { (FOO as *const usize).offset(2) };
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>

error: any use of this value will cause an error
--> $DIR/ptr_comparisons.rs:66:33
--> $DIR/ptr_comparisons.rs:64:33
|
LL | / const _: *const u8 =
LL | |
LL | | unsafe { std::ptr::addr_of!((*(FOO as *const usize as *const [u8; 1000]))[999]) };
| |_________________________________^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___-
| |
Expand All @@ -31,7 +30,7 @@ LL | | unsafe { std::ptr::addr_of!((*(FOO as *const usize as *const [u8; 100
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>

error: any use of this value will cause an error
--> $DIR/ptr_comparisons.rs:72:27
--> $DIR/ptr_comparisons.rs:68:27
|
LL | const _: usize = unsafe { std::mem::transmute::<*const usize, usize>(FOO) + 4 };
| --------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---
Expand All @@ -42,7 +41,7 @@ LL | const _: usize = unsafe { std::mem::transmute::<*const usize, usize>(FOO) +
= note: for more information, see issue #71800 <https://github.com/rust-lang/rust/issues/71800>

error: any use of this value will cause an error
--> $DIR/ptr_comparisons.rs:79:27
--> $DIR/ptr_comparisons.rs:73:27
|
LL | const _: usize = unsafe { *std::mem::transmute::<&&usize, &usize>(&FOO) + 4 };
| --------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---
Expand Down

0 comments on commit f1fdbe2

Please sign in to comment.