about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2018-11-05 13:55:00 +0100
committerFelix S. Klock II <pnkfelix@pnkfx.org>2018-11-05 15:26:02 +0100
commit9f9bf94b8dcb9acc4c0419dec256d1ece3139b1c (patch)
tree5710187146c00608935cecb91094ca3781e67e04
parentaffddf68c623390aa5566dad6357892d9e0ae278 (diff)
downloadrust-9f9bf94b8dcb9acc4c0419dec256d1ece3139b1c.tar.gz
rust-9f9bf94b8dcb9acc4c0419dec256d1ece3139b1c.zip
Make `ui/borrowck/borrowck-overloaded-index-move-index.rs` robust w.r.t. NLL.
-rw-r--r--src/test/ui/borrowck/borrowck-overloaded-index-move-index.nll.stderr29
-rw-r--r--src/test/ui/borrowck/borrowck-overloaded-index-move-index.rs4
2 files changed, 31 insertions, 2 deletions
diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-move-index.nll.stderr b/src/test/ui/borrowck/borrowck-overloaded-index-move-index.nll.stderr
index 824d8298ecb..198d086aa3b 100644
--- a/src/test/ui/borrowck/borrowck-overloaded-index-move-index.nll.stderr
+++ b/src/test/ui/borrowck/borrowck-overloaded-index-move-index.nll.stderr
@@ -1,3 +1,27 @@
+error[E0505]: cannot move out of `s` because it is borrowed
+  --> $DIR/borrowck-overloaded-index-move-index.rs:60:22
+   |
+LL |     let rs = &mut s;
+   |              ------ borrow of `s` occurs here
+LL | 
+LL |     println!("{}", f[s]);
+   |                      ^ move out of `s` occurs here
+...
+LL |     use_mut(rs);
+   |             -- borrow later used here
+
+error[E0505]: cannot move out of `s` because it is borrowed
+  --> $DIR/borrowck-overloaded-index-move-index.rs:63:7
+   |
+LL |     let rs = &mut s;
+   |              ------ borrow of `s` occurs here
+...
+LL |     f[s] = 10;
+   |       ^ move out of `s` occurs here
+...
+LL |     use_mut(rs);
+   |             -- borrow later used here
+
 error[E0382]: use of moved value: `s`
   --> $DIR/borrowck-overloaded-index-move-index.rs:63:7
    |
@@ -9,6 +33,7 @@ LL |     f[s] = 10;
    |
    = note: move occurs because `s` has type `std::string::String`, which does not implement the `Copy` trait
 
-error: aborting due to previous error
+error: aborting due to 3 previous errors
 
-For more information about this error, try `rustc --explain E0382`.
+Some errors occurred: E0382, E0505.
+For more information about an error, try `rustc --explain E0382`.
diff --git a/src/test/ui/borrowck/borrowck-overloaded-index-move-index.rs b/src/test/ui/borrowck/borrowck-overloaded-index-move-index.rs
index d8615d19053..e95423a8e83 100644
--- a/src/test/ui/borrowck/borrowck-overloaded-index-move-index.rs
+++ b/src/test/ui/borrowck/borrowck-overloaded-index-move-index.rs
@@ -71,4 +71,8 @@ fn main() {
     let _j = &i;
     println!("{}", s[i]); // no error, i is copy
     println!("{}", s[i]);
+
+    use_mut(rs);
 }
+
+fn use_mut<T>(_: &mut T) { }