about summary refs log tree commit diff
diff options
context:
space:
mode:
authorcsmoe <35686186+csmoe@users.noreply.github.com>2018-06-14 09:12:50 +0800
committerashtneoi <ashtneoi@gmail.com>2018-07-12 22:51:30 -0700
commit7a70140ed5a3fb5aa747d219f19f8b1d55812807 (patch)
tree5bb221829d7f4b3341ef57578ea99fe66df71c53
parent8932684ccc3b4a24a301bd68a6c21a182dfd6028 (diff)
downloadrust-7a70140ed5a3fb5aa747d219f19f8b1d55812807.tar.gz
rust-7a70140ed5a3fb5aa747d219f19f8b1d55812807.zip
span_suggestion
-rw-r--r--src/librustc_borrowck/borrowck/mod.rs5
-rw-r--r--src/test/ui/nll/issue-51244.rs16
-rw-r--r--src/test/ui/nll/issue-51244.stderr (renamed from src/test/ui/suggestions/issue-51244.nll.stderr)4
-rw-r--r--src/test/ui/rfc-2005-default-binding-mode/enum.stderr6
-rw-r--r--src/test/ui/rfc-2005-default-binding-mode/explicit-mut.stderr6
-rw-r--r--src/test/ui/suggestions/issue-51244.stderr2
6 files changed, 28 insertions, 11 deletions
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 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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
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