]> git.lizzy.rs Git - rust.git/commitdiff
Update test for mutably borrowed statics in a const
authorDylan MacKenzie <ecstaticmorse@gmail.com>
Wed, 27 Nov 2019 01:08:46 +0000 (17:08 -0800)
committerDylan MacKenzie <ecstaticmorse@gmail.com>
Thu, 28 Nov 2019 00:14:37 +0000 (16:14 -0800)
This checks `static mut` as well for E0017, and blesses tests now that
we emit an error for a mut deref.

src/test/ui/error-codes/E0017.rs
src/test/ui/error-codes/E0017.stderr

index 94b6587eb815a2d12d78222d45fe1c7faa581240..3bc518c2c2b719c8ef983aecbea807d58e9b68e4 100644 (file)
@@ -1,8 +1,11 @@
 static X: i32 = 1;
 const C: i32 = 2;
+static mut M: i32 = 3;
 
 const CR: &'static mut i32 = &mut C; //~ ERROR E0017
 static STATIC_REF: &'static mut i32 = &mut X; //~ ERROR E0017
+                                              //~| ERROR E0019
                                               //~| ERROR cannot borrow
 static CONST_REF: &'static mut i32 = &mut C; //~ ERROR E0017
+static STATIC_MUT_REF: &'static mut i32 = unsafe { &mut M }; //~ ERROR E0017
 fn main() {}
index 47863f02214057e2ac319f03fd7067f256a21fe8..8c8660adceb7a6d1ccdec30ef256aaf07b998871 100644 (file)
@@ -1,28 +1,40 @@
 error[E0017]: references in constants may only refer to immutable values
-  --> $DIR/E0017.rs:4:30
+  --> $DIR/E0017.rs:5:30
    |
 LL | const CR: &'static mut i32 = &mut C;
    |                              ^^^^^^ constants require immutable values
 
+error[E0019]: static contains unimplemented expression type
+  --> $DIR/E0017.rs:6:39
+   |
+LL | static STATIC_REF: &'static mut i32 = &mut X;
+   |                                       ^^^^^^
+
 error[E0017]: references in statics may only refer to immutable values
-  --> $DIR/E0017.rs:5:39
+  --> $DIR/E0017.rs:6:39
    |
 LL | static STATIC_REF: &'static mut i32 = &mut X;
    |                                       ^^^^^^ statics require immutable values
 
 error[E0596]: cannot borrow immutable static item `X` as mutable
-  --> $DIR/E0017.rs:5:39
+  --> $DIR/E0017.rs:6:39
    |
 LL | static STATIC_REF: &'static mut i32 = &mut X;
    |                                       ^^^^^^ cannot borrow as mutable
 
 error[E0017]: references in statics may only refer to immutable values
-  --> $DIR/E0017.rs:7:38
+  --> $DIR/E0017.rs:9:38
    |
 LL | static CONST_REF: &'static mut i32 = &mut C;
    |                                      ^^^^^^ statics require immutable values
 
-error: aborting due to 4 previous errors
+error[E0017]: references in statics may only refer to immutable values
+  --> $DIR/E0017.rs:10:52
+   |
+LL | static STATIC_MUT_REF: &'static mut i32 = unsafe { &mut M };
+   |                                                    ^^^^^^ statics require immutable values
+
+error: aborting due to 6 previous errors
 
-Some errors have detailed explanations: E0017, E0596.
+Some errors have detailed explanations: E0017, E0019, E0596.
 For more information about an error, try `rustc --explain E0017`.