diff options
| author | Christian Poveda <christianpoveda@protonmail.com> | 2019-11-26 22:43:40 -0500 |
|---|---|---|
| committer | Christian Poveda <christianpoveda@protonmail.com> | 2019-12-02 09:43:39 -0500 |
| commit | 5e61e4cadc72141f9e4c80ca8615509f2eaeb51f (patch) | |
| tree | dac937bf01989b136a15496ba4601aa779be35ee | |
| parent | 681690db4e41505401a0ebbf3d1e4bec69ead702 (diff) | |
| download | rust-5e61e4cadc72141f9e4c80ca8615509f2eaeb51f.tar.gz rust-5e61e4cadc72141f9e4c80ca8615509f2eaeb51f.zip | |
Suggest feature for const_mut_refs errors
| -rw-r--r-- | src/librustc_mir/transform/check_consts/ops.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/consts/const-eval/issue-65394.stderr | 9 | ||||
| -rw-r--r-- | src/test/ui/consts/const-multi-ref.stderr | 9 | ||||
| -rw-r--r-- | src/test/ui/consts/const_let_assign3.stderr | 14 | ||||
| -rw-r--r-- | src/test/ui/consts/projection_qualif.stderr | 9 | ||||
| -rw-r--r-- | src/test/ui/consts/static_mut_containing_mut_ref2.stderr | 9 |
6 files changed, 41 insertions, 19 deletions
diff --git a/src/librustc_mir/transform/check_consts/ops.rs b/src/librustc_mir/transform/check_consts/ops.rs index 1d23b6e27f3..182ba462566 100644 --- a/src/librustc_mir/transform/check_consts/ops.rs +++ b/src/librustc_mir/transform/check_consts/ops.rs @@ -197,9 +197,13 @@ impl NonConstOp for MutBorrow { } fn emit_error(&self, item: &Item<'_, '_>, span: Span) { - let mut err = struct_span_err!(item.tcx.sess, span, E0017, - "references in {}s may only refer \ - to immutable values", item.const_kind()); + let mut err = feature_err( + &item.tcx.sess.parse_sess, + sym::const_mut_refs, + span, + &format!("references in {}s may only refer \ + to immutable values", item.const_kind()) + ); err.span_label(span, format!("{}s require immutable values", item.const_kind())); if item.tcx.sess.teach(&err.get_code().unwrap()) { diff --git a/src/test/ui/consts/const-eval/issue-65394.stderr b/src/test/ui/consts/const-eval/issue-65394.stderr index acf5cbaede6..54b35073340 100644 --- a/src/test/ui/consts/const-eval/issue-65394.stderr +++ b/src/test/ui/consts/const-eval/issue-65394.stderr @@ -1,8 +1,11 @@ -error[E0017]: references in constants may only refer to immutable values +error[E0658]: references in constants may only refer to immutable values --> $DIR/issue-65394.rs:8:13 | LL | let r = &mut x; | ^^^^^^ constants require immutable values + | + = 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[E0493]: destructors cannot be evaluated at compile-time --> $DIR/issue-65394.rs:7:9 @@ -12,5 +15,5 @@ LL | let mut x = Vec::<i32>::new(); error: aborting due to 2 previous errors -Some errors have detailed explanations: E0017, E0493. -For more information about an error, try `rustc --explain E0017`. +Some errors have detailed explanations: E0493, E0658. +For more information about an error, try `rustc --explain E0493`. diff --git a/src/test/ui/consts/const-multi-ref.stderr b/src/test/ui/consts/const-multi-ref.stderr index ed3837e9c9e..0809c77c1b6 100644 --- a/src/test/ui/consts/const-multi-ref.stderr +++ b/src/test/ui/consts/const-multi-ref.stderr @@ -1,8 +1,11 @@ -error[E0017]: references in constants may only refer to immutable values +error[E0658]: references in constants may only refer to immutable values --> $DIR/const-multi-ref.rs:6:13 | LL | let p = &mut a; | ^^^^^^ constants require immutable values + | + = 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[E0492]: cannot borrow a constant which may contain interior mutability, create a static instead --> $DIR/const-multi-ref.rs:16:13 @@ -12,5 +15,5 @@ LL | let p = &a; error: aborting due to 2 previous errors -Some errors have detailed explanations: E0017, E0492. -For more information about an error, try `rustc --explain E0017`. +Some errors have detailed explanations: E0492, E0658. +For more information about an error, try `rustc --explain E0492`. diff --git a/src/test/ui/consts/const_let_assign3.stderr b/src/test/ui/consts/const_let_assign3.stderr index 53b960b4ec0..7852874944b 100644 --- a/src/test/ui/consts/const_let_assign3.stderr +++ b/src/test/ui/consts/const_let_assign3.stderr @@ -4,17 +4,23 @@ error[E0019]: constant function contains unimplemented expression type LL | self.state = x; | ^^^^^^^^^^^^^^ -error[E0017]: references in constants may only refer to immutable values +error[E0658]: references in constants may only refer to immutable values --> $DIR/const_let_assign3.rs:16:5 | LL | s.foo(3); | ^ constants require immutable values + | + = 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[E0017]: references in constants may only refer to immutable values +error[E0658]: references in constants may only refer to immutable values --> $DIR/const_let_assign3.rs:22:13 | LL | let y = &mut x; | ^^^^^^ constants require immutable values + | + = 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[E0019]: constant contains unimplemented expression type --> $DIR/const_let_assign3.rs:24:5 @@ -24,5 +30,5 @@ LL | *y = 42; error: aborting due to 4 previous errors -Some errors have detailed explanations: E0017, E0019. -For more information about an error, try `rustc --explain E0017`. +Some errors have detailed explanations: E0019, E0658. +For more information about an error, try `rustc --explain E0019`. diff --git a/src/test/ui/consts/projection_qualif.stderr b/src/test/ui/consts/projection_qualif.stderr index 0efb6bfd10a..41c7b62812c 100644 --- a/src/test/ui/consts/projection_qualif.stderr +++ b/src/test/ui/consts/projection_qualif.stderr @@ -1,8 +1,11 @@ -error[E0017]: references in constants may only refer to immutable values +error[E0658]: references in constants may only refer to immutable values --> $DIR/projection_qualif.rs:6:27 | LL | let b: *mut u32 = &mut a; | ^^^^^^ constants require immutable values + | + = 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[E0658]: dereferencing raw pointers in constants is unstable --> $DIR/projection_qualif.rs:7:18 @@ -21,5 +24,5 @@ LL | unsafe { *b = 5; } error: aborting due to 3 previous errors -Some errors have detailed explanations: E0017, E0019, E0658. -For more information about an error, try `rustc --explain E0017`. +Some errors have detailed explanations: E0019, E0658. +For more information about an error, try `rustc --explain E0019`. diff --git a/src/test/ui/consts/static_mut_containing_mut_ref2.stderr b/src/test/ui/consts/static_mut_containing_mut_ref2.stderr index ca691b07be0..e0074687874 100644 --- a/src/test/ui/consts/static_mut_containing_mut_ref2.stderr +++ b/src/test/ui/consts/static_mut_containing_mut_ref2.stderr @@ -1,8 +1,11 @@ -error[E0017]: references in statics may only refer to immutable values +error[E0658]: references in statics may only refer to immutable values --> $DIR/static_mut_containing_mut_ref2.rs:3:46 | LL | pub static mut STDERR_BUFFER: () = unsafe { *(&mut STDERR_BUFFER_SPACE) = 42; }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ statics require immutable values + | + = 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[E0019]: static contains unimplemented expression type --> $DIR/static_mut_containing_mut_ref2.rs:3:45 @@ -12,5 +15,5 @@ LL | pub static mut STDERR_BUFFER: () = unsafe { *(&mut STDERR_BUFFER_SPACE) = 4 error: aborting due to 2 previous errors -Some errors have detailed explanations: E0017, E0019. -For more information about an error, try `rustc --explain E0017`. +Some errors have detailed explanations: E0019, E0658. +For more information about an error, try `rustc --explain E0019`. |
