-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update test for mutably borrowed statics in a const
This checks `static mut` as well for E0017, and blesses tests now that we emit an error for a mut deref.
- Loading branch information
1 parent
a70ac50
commit 846be82
Showing
2 changed files
with
21 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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`. |