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() {}
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`.