diff options
| author | Ralf Jung <post@ralfj.de> | 2021-07-31 11:52:59 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2021-07-31 11:52:59 +0200 |
| commit | 2a9b44d97d55779b3758a1f0558b22de3a6572ea (patch) | |
| tree | 5a20a876e01bd36dc101a15112d5ad9cb6df9b20 /src/test | |
| parent | b7b509137830fda21e2354027d846cd6aca32bcb (diff) | |
| download | rust-2a9b44d97d55779b3758a1f0558b22de3a6572ea.tar.gz rust-2a9b44d97d55779b3758a1f0558b22de3a6572ea.zip | |
add a test
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/consts/const-eval/partial_ptr_overwrite.rs | 15 | ||||
| -rw-r--r-- | src/test/ui/consts/const-eval/partial_ptr_overwrite.stderr | 20 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/test/ui/consts/const-eval/partial_ptr_overwrite.rs b/src/test/ui/consts/const-eval/partial_ptr_overwrite.rs new file mode 100644 index 00000000000..5371f9f1749 --- /dev/null +++ b/src/test/ui/consts/const-eval/partial_ptr_overwrite.rs @@ -0,0 +1,15 @@ +// Test for the behavior described in <https://github.com/rust-lang/rust/issues/87184>. +#![feature(const_mut_refs, const_raw_ptr_deref)] + +const PARTIAL_OVERWRITE: () = { + let mut p = &42; + unsafe { + let ptr: *mut _ = &mut p; + *(ptr as *mut u8) = 123; //~ ERROR any use of this value + //~| unable to overwrite parts of a pointer + //~| WARN previously accepted + } + let x = *p; +}; + +fn main() {} diff --git a/src/test/ui/consts/const-eval/partial_ptr_overwrite.stderr b/src/test/ui/consts/const-eval/partial_ptr_overwrite.stderr new file mode 100644 index 00000000000..a18c7e78d95 --- /dev/null +++ b/src/test/ui/consts/const-eval/partial_ptr_overwrite.stderr @@ -0,0 +1,20 @@ +error: any use of this value will cause an error + --> $DIR/partial_ptr_overwrite.rs:8:9 + | +LL | / const PARTIAL_OVERWRITE: () = { +LL | | let mut p = &42; +LL | | unsafe { +LL | | let ptr: *mut _ = &mut p; +LL | | *(ptr as *mut u8) = 123; + | | ^^^^^^^^^^^^^^^^^^^^^^^ unable to overwrite parts of a pointer in memory at alloc4 +... | +LL | | let x = *p; +LL | | }; + | |__- + | + = note: `#[deny(const_err)]` on by default + = 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: aborting due to previous error + |
