kill the code path for E0388
This was specific to the old special-case handling of statics in borrowck.
This commit is contained in:
parent
d79ad36cf5
commit
2b5c0267b4
@ -801,11 +801,13 @@ impl<'a, 'tcx> BorrowckCtxt<'a, 'tcx> {
|
||||
}
|
||||
mc::AliasableStatic |
|
||||
mc::AliasableStaticMut => {
|
||||
let mut err = struct_span_err!(
|
||||
self.tcx.sess, span, E0388,
|
||||
"{} in a static location", prefix);
|
||||
err.span_label(span, &format!("cannot write data in a static definition"));
|
||||
err
|
||||
// This path cannot occur. It happens when we have an
|
||||
// `&mut` or assignment to a static. But in the case
|
||||
// of `static X`, we get a mutability violation first,
|
||||
// and never get here. In the case of `static mut X`,
|
||||
// that is unsafe and hence the aliasability error is
|
||||
// ignored.
|
||||
span_bug!(span, "aliasability violation for static `{}`", prefix)
|
||||
}
|
||||
mc::AliasableBorrowed => {
|
||||
let mut e = struct_span_err!(
|
||||
|
@ -287,27 +287,7 @@ https://doc.rust-lang.org/std/cell/
|
||||
"##,
|
||||
|
||||
E0388: r##"
|
||||
A mutable borrow was attempted in a static location.
|
||||
|
||||
Erroneous code example:
|
||||
|
||||
```compile_fail,E0388
|
||||
static X: i32 = 1;
|
||||
|
||||
static STATIC_REF: &'static mut i32 = &mut X;
|
||||
// error: cannot borrow data mutably in a static location
|
||||
|
||||
const CONST_REF: &'static mut i32 = &mut X;
|
||||
// error: cannot borrow data mutably in a static location
|
||||
```
|
||||
|
||||
To fix this error, you have to use constant borrow:
|
||||
|
||||
```
|
||||
static X: i32 = 1;
|
||||
|
||||
static STATIC_REF: &'static i32 = &X;
|
||||
```
|
||||
E0388 was removed and is no longer issued.
|
||||
"##,
|
||||
|
||||
E0389: r##"
|
||||
|
Loading…
x
Reference in New Issue
Block a user