about summary refs log tree commit diff
path: root/src/test/ui/array-slice-vec/vector-cast-weirdness.stderr
diff options
context:
space:
mode:
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
commitd64b749f2cebcfec942ecbbb87e24a9f8cc28469 (patch)
tree4beeddf028a59d62fbe674d92e0c680049e26ae2 /src/test/ui/array-slice-vec/vector-cast-weirdness.stderr
parent6523b721c3d8a92cf06aab04dd15ebe7fd5a9fb7 (diff)
downloadrust-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.stderr22
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`.