diff options
| author | Ömer Sinan Ağacan <omeragacan@gmail.com> | 2021-01-28 20:22:33 +0300 |
|---|---|---|
| committer | Ömer Sinan Ağacan <omeragacan@gmail.com> | 2021-02-10 15:44:41 +0300 |
| commit | d64b749f2cebcfec942ecbbb87e24a9f8cc28469 (patch) | |
| tree | 4beeddf028a59d62fbe674d92e0c680049e26ae2 /src/test/ui/array-slice-vec/vector-cast-weirdness.stderr | |
| parent | 6523b721c3d8a92cf06aab04dd15ebe7fd5a9fb7 (diff) | |
| download | rust-d64b749f2cebcfec942ecbbb87e24a9f8cc28469.tar.gz rust-d64b749f2cebcfec942ecbbb87e24a9f8cc28469.zip | |
Allow casting mut array ref to mut ptr
We now allow two new casts:
- mut array reference to mut ptr. Example:
let mut x: [usize; 2] = [0, 0];
let p = &mut x as *mut usize;
We allow casting const array references to const pointers so not
allowing mut references to mut pointers was inconsistent.
- mut array reference to const ptr. Example:
let mut x: [usize; 2] = [0, 0];
let p = &mut x as *const usize;
This was similarly inconsistent as we allow casting mut references to
const pointers.
Existing test 'vector-cast-weirdness' updated to test both cases.
Fixes #24151
Diffstat (limited to 'src/test/ui/array-slice-vec/vector-cast-weirdness.stderr')
| -rw-r--r-- | src/test/ui/array-slice-vec/vector-cast-weirdness.stderr | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/test/ui/array-slice-vec/vector-cast-weirdness.stderr b/src/test/ui/array-slice-vec/vector-cast-weirdness.stderr index 37055bb75f5..6fdb1ac9e30 100644 --- a/src/test/ui/array-slice-vec/vector-cast-weirdness.stderr +++ b/src/test/ui/array-slice-vec/vector-cast-weirdness.stderr @@ -1,9 +1,21 @@ -error[E0606]: casting `&mut [u8; 2]` as `*mut u8` is invalid - --> $DIR/vector-cast-weirdness.rs:21:23 +error[E0606]: casting `&[u8; 2]` as `*mut u8` is invalid + --> $DIR/vector-cast-weirdness.rs:19:23 | -LL | let p1: *mut u8 = &mut x1.y as *mut _; - | ^^^^^^^^^^^^^^^^^^^ +LL | let p1: *mut u8 = &x1.y as *mut _; + | ^^^^^^^^^^^^^^^ -error: aborting due to previous error +error[E0606]: casting `&[u8; 2]` as `*mut [u8; 2]` is invalid + --> $DIR/vector-cast-weirdness.rs:22:28 + | +LL | let t1: *mut [u8; 2] = &x1.y as *mut _; + | ^^^^^^^^^^^^^^^ + +error[E0606]: casting `&[u8; 2]` as `*mut [u8; 2]` is invalid + --> $DIR/vector-cast-weirdness.rs:25:28 + | +LL | let t1: *mut [u8; 2] = &x1.y as *mut [u8; 2]; + | ^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0606`. |
