diff --git a/src/librustc_borrowck/borrowck/mod.rs b/src/librustc_borrowck/borrowck/mod.rs index aa00ccd1f08..6a42189fb15 100644 --- a/src/librustc_borrowck/borrowck/mod.rs +++ b/src/librustc_borrowck/borrowck/mod.rs @@ -1215,9 +1215,10 @@ impl<'a, 'tcx> BorrowckCtxt<'a, 'tcx> { } else { snippet }; - db.span_label( + db.span_suggestion( let_span, - format!("consider changing this to `{}`", replace_str) + "use a mutable reference instead", + replace_str, ); }; } diff --git a/src/test/ui/nll/issue-51244.rs b/src/test/ui/nll/issue-51244.rs new file mode 100644 index 00000000000..56d9449c467 --- /dev/null +++ b/src/test/ui/nll/issue-51244.rs @@ -0,0 +1,16 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(nll)] + +fn main() { + let ref my_ref @ _ = 0; + *my_ref = 0; //~ ERROR cannot assign to data in a `&` reference [E0594] +} diff --git a/src/test/ui/suggestions/issue-51244.nll.stderr b/src/test/ui/nll/issue-51244.stderr similarity index 72% rename from src/test/ui/suggestions/issue-51244.nll.stderr rename to src/test/ui/nll/issue-51244.stderr index 95b71c41cfa..f1f47fc61ce 100644 --- a/src/test/ui/suggestions/issue-51244.nll.stderr +++ b/src/test/ui/nll/issue-51244.stderr @@ -1,9 +1,9 @@ error[E0594]: cannot assign to data in a `&` reference - --> $DIR/issue-51244.rs:13:5 + --> $DIR/issue-51244.rs:15:5 | LL | let ref my_ref @ _ = 0; | -------------- help: consider changing this to be a mutable reference: `&mut ef my_ref @ _` -LL | *my_ref = 0; //~ ERROR cannot assign to immutable borrowed content `*my_ref` [E0594] +LL | *my_ref = 0; //~ ERROR cannot assign to data in a `&` reference [E0594] | ^^^^^^^^^^^ error: aborting due to previous error diff --git a/src/test/ui/rfc-2005-default-binding-mode/enum.stderr b/src/test/ui/rfc-2005-default-binding-mode/enum.stderr index a7f3b507508..26d51e93381 100644 --- a/src/test/ui/rfc-2005-default-binding-mode/enum.stderr +++ b/src/test/ui/rfc-2005-default-binding-mode/enum.stderr @@ -2,7 +2,7 @@ error[E0594]: cannot assign to immutable borrowed content `*x` --> $DIR/enum.rs:19:5 | LL | let Wrap(x) = &Wrap(3); - | - consider changing this to `x` + | - help: use a mutable reference instead: `x` LL | *x += 1; //~ ERROR cannot assign to immutable | ^^^^^^^ cannot borrow as mutable @@ -10,7 +10,7 @@ error[E0594]: cannot assign to immutable borrowed content `*x` --> $DIR/enum.rs:23:9 | LL | if let Some(x) = &Some(3) { - | - consider changing this to `x` + | - help: use a mutable reference instead: `x` LL | *x += 1; //~ ERROR cannot assign to immutable | ^^^^^^^ cannot borrow as mutable @@ -18,7 +18,7 @@ error[E0594]: cannot assign to immutable borrowed content `*x` --> $DIR/enum.rs:29:9 | LL | while let Some(x) = &Some(3) { - | - consider changing this to `x` + | - help: use a mutable reference instead: `x` LL | *x += 1; //~ ERROR cannot assign to immutable | ^^^^^^^ cannot borrow as mutable diff --git a/src/test/ui/rfc-2005-default-binding-mode/explicit-mut.stderr b/src/test/ui/rfc-2005-default-binding-mode/explicit-mut.stderr index f2b9bde41ab..2f5eb8a3d8e 100644 --- a/src/test/ui/rfc-2005-default-binding-mode/explicit-mut.stderr +++ b/src/test/ui/rfc-2005-default-binding-mode/explicit-mut.stderr @@ -2,7 +2,7 @@ error[E0594]: cannot assign to immutable borrowed content `*n` --> $DIR/explicit-mut.rs:17:13 | LL | Some(n) => { - | - consider changing this to `n` + | - help: use a mutable reference instead: `n` LL | *n += 1; //~ ERROR cannot assign to immutable | ^^^^^^^ cannot borrow as mutable @@ -10,7 +10,7 @@ error[E0594]: cannot assign to immutable borrowed content `*n` --> $DIR/explicit-mut.rs:25:13 | LL | Some(n) => { - | - consider changing this to `n` + | - help: use a mutable reference instead: `n` LL | *n += 1; //~ ERROR cannot assign to immutable | ^^^^^^^ cannot borrow as mutable @@ -18,7 +18,7 @@ error[E0594]: cannot assign to immutable borrowed content `*n` --> $DIR/explicit-mut.rs:33:13 | LL | Some(n) => { - | - consider changing this to `n` + | - help: use a mutable reference instead: `n` LL | *n += 1; //~ ERROR cannot assign to immutable | ^^^^^^^ cannot borrow as mutable diff --git a/src/test/ui/suggestions/issue-51244.stderr b/src/test/ui/suggestions/issue-51244.stderr index b4ce2975623..997a74295e5 100644 --- a/src/test/ui/suggestions/issue-51244.stderr +++ b/src/test/ui/suggestions/issue-51244.stderr @@ -2,7 +2,7 @@ error[E0594]: cannot assign to immutable borrowed content `*my_ref` --> $DIR/issue-51244.rs:13:5 | LL | let ref my_ref @ _ = 0; - | -------------- consider changing this to `ref mut my_ref @ _` + | -------------- help: use a mutable reference instead: `ref mut my_ref @ _` LL | *my_ref = 0; //~ ERROR cannot assign to immutable borrowed content `*my_ref` [E0594] | ^^^^^^^^^^^ cannot borrow as mutable