Clarify suggestion for E0013

This commit is contained in:
varkor 2020-01-10 13:31:36 +00:00
parent 2d8d559bbe
commit 8ca55641fd
7 changed files with 35 additions and 16 deletions

View File

@ -350,16 +350,18 @@ impl NonConstOp for StaticAccess {
item.tcx.sess,
span,
E0013,
"{}s cannot refer to statics, use \
a constant instead",
"{}s cannot refer to statics",
item.const_kind()
);
err.help(
"consider extracting the value of the `static` to a `const`, and referring to that",
);
if item.tcx.sess.teach(&err.get_code().unwrap()) {
err.note(
"Static and const variables can refer to other const variables. \
But a const variable cannot refer to a static variable.",
"`static` and `const` variables can refer to other `const` variables. \
A `const` variable, however, cannot refer to a `static` variable.",
);
err.help("To fix this, the value can be extracted as a const and then used.");
err.help("To fix this, the value can be extracted to a `const` and then used.");
}
err.emit();
}

View File

@ -4,17 +4,21 @@ error[E0015]: calls in constant functions are limited to constant functions, tup
LL | random()
| ^^^^^^^^
error[E0013]: constant functions cannot refer to statics, use a constant instead
error[E0013]: constant functions cannot refer to statics
--> $DIR/const-fn-not-safe-for-const.rs:20:5
|
LL | Y
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error[E0013]: constant functions cannot refer to statics, use a constant instead
error[E0013]: constant functions cannot refer to statics
--> $DIR/const-fn-not-safe-for-const.rs:25:6
|
LL | &Y
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error: aborting due to 3 previous errors

View File

@ -7,17 +7,21 @@ LL | const C1: &'static mut [usize] = &mut [];
= note: for more information, see https://github.com/rust-lang/rust/issues/57349
= help: add `#![feature(const_mut_refs)]` to the crate attributes to enable
error[E0013]: constants cannot refer to statics, use a constant instead
error[E0013]: constants cannot refer to statics
--> $DIR/issue-17718-const-bad-values.rs:5:46
|
LL | const C2: &'static mut usize = unsafe { &mut S };
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error[E0013]: constants cannot refer to statics, use a constant instead
error[E0013]: constants cannot refer to statics
--> $DIR/issue-17718-const-bad-values.rs:5:46
|
LL | const C2: &'static mut usize = unsafe { &mut S };
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error[E0658]: references in constants may only refer to immutable values
--> $DIR/issue-17718-const-bad-values.rs:5:41

View File

@ -1,20 +1,26 @@
error[E0013]: constants cannot refer to statics, use a constant instead
error[E0013]: constants cannot refer to statics
--> $DIR/issue-17718-references.rs:9:29
|
LL | const T2: &'static usize = &S;
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error[E0013]: constants cannot refer to statics, use a constant instead
error[E0013]: constants cannot refer to statics
--> $DIR/issue-17718-references.rs:14:19
|
LL | const T6: usize = S;
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error[E0013]: constants cannot refer to statics, use a constant instead
error[E0013]: constants cannot refer to statics
--> $DIR/issue-17718-references.rs:19:33
|
LL | const T10: Struct = Struct { a: S };
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error: aborting due to 3 previous errors

View File

@ -1,7 +1,6 @@
pub fn main() {
const z: &'static isize = {
static p: isize = 3;
&p
//~^ ERROR constants cannot refer to statics, use a constant instead
&p //~ ERROR constants cannot refer to statics
};
}

View File

@ -1,8 +1,10 @@
error[E0013]: constants cannot refer to statics, use a constant instead
error[E0013]: constants cannot refer to statics
--> $DIR/issue-18118-2.rs:4:10
|
LL | &p
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error: aborting due to previous error

View File

@ -1,8 +1,10 @@
error[E0013]: constants cannot refer to statics, use a constant instead
error[E0013]: constants cannot refer to statics
--> $DIR/issue-52060.rs:4:26
|
LL | static B: [u32; 1] = [0; A.len()];
| ^
|
= help: consider extracting the value of the `static` to a `const`, and referring to that
error[E0080]: evaluation of constant value failed
--> $DIR/issue-52060.rs:4:26