Skip to content

Commit

Permalink
Update test for mutably borrowed statics in a const
Browse files Browse the repository at this point in the history
This checks `static mut` as well for E0017, and blesses tests now that
we emit an error for a mut deref.
  • Loading branch information
ecstatic-morse committed Nov 28, 2019
1 parent a70ac50 commit 846be82
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
3 changes: 3 additions & 0 deletions src/test/ui/error-codes/E0017.rs
@@ -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() {}
24 changes: 18 additions & 6 deletions src/test/ui/error-codes/E0017.stderr
@@ -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`.

0 comments on commit 846be82

Please sign in to comment.