]> git.lizzy.rs Git - rust.git/blobdiff - src/test/ui/span/borrowck-call-is-borrow-issue-12224.stderr
Update tests for changes to cannot move errors
[rust.git] / src / test / ui / span / borrowck-call-is-borrow-issue-12224.stderr
index 7855c8ed46bd9e178afc6b6a6a11014fc942322a..72f875bbd14a4101c2d1146febb23296422e4dbf 100644 (file)
@@ -5,46 +5,48 @@ LL |     f(Box::new(|| {
    |     -          ^^ second mutable borrow occurs here
    |     |
    |     first mutable borrow occurs here
+   |     first borrow later used by call
 LL |
 LL |         f((Box::new(|| {})))
-   |         - borrow occurs due to use of `f` in closure
-LL |     }));
-   |       - first borrow ends here
+   |         - second borrow occurs due to use of `f` in closure
 
-error[E0596]: cannot borrow immutable borrowed content `*f` as mutable
+error[E0596]: cannot borrow `*f` as mutable, as it is behind a `&` reference
   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:25:5
    |
 LL | fn test2<F>(f: &F) where F: FnMut() {
-   |                -- use `&mut F` here to make mutable
+   |                -- help: consider changing this to be a mutable reference: `&mut F`
 LL |     (*f)();
-   |     ^^^^ cannot borrow as mutable
+   |     ^^^^ `f` is a `&` reference, so the data it refers to cannot be borrowed as mutable
 
-error[E0596]: cannot borrow field `f.f` of immutable binding as mutable
+error[E0596]: cannot borrow `f.f` as mutable, as it is behind a `&` reference
   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:34:5
    |
 LL | fn test4(f: &Test) {
-   |             ----- use `&mut Test` here to make mutable
+   |             ----- help: consider changing this to be a mutable reference: `&mut Test<'_>`
 LL |     f.f.call_mut(())
-   |     ^^^ cannot mutably borrow field of immutable binding
+   |     ^^^ `f` is a `&` reference, so the data it refers to cannot be borrowed as mutable
 
-error[E0504]: cannot move `f` into closure because it is borrowed
-  --> $DIR/borrowck-call-is-borrow-issue-12224.rs:56:13
+error[E0507]: cannot move out of `f`, a captured variable in an `FnMut` closure
+  --> $DIR/borrowck-call-is-borrow-issue-12224.rs:57:13
    |
-LL |     f(Box::new(|a| {
-   |     - borrow of `f` occurs here
+LL |     let mut f = move |g: Box<dyn FnMut(isize)>, b: isize| {
+   |         ----- captured outer variable
+...
 LL |         foo(f);
-   |             ^ move into closure occurs here
+   |             ^ move occurs because `f` has type `[closure@$DIR/borrowck-call-is-borrow-issue-12224.rs:52:17: 54:6 s:std::string::String]`, which does not implement the `Copy` trait
 
-error[E0507]: cannot move out of captured outer variable in an `FnMut` closure
-  --> $DIR/borrowck-call-is-borrow-issue-12224.rs:56:13
+error[E0505]: cannot move out of `f` because it is borrowed
+  --> $DIR/borrowck-call-is-borrow-issue-12224.rs:55:16
    |
-LL |     let mut f = move |g: Box<FnMut(isize)>, b: isize| {
-   |         ----- captured outer variable
-...
+LL |     f(Box::new(|a| {
+   |     -          ^^^ move out of `f` occurs here
+   |     |
+   |     borrow of `f` occurs here
+LL |
 LL |         foo(f);
-   |             ^ cannot move out of captured outer variable in an `FnMut` closure
+   |             - move occurs due to use in closure
 
 error: aborting due to 5 previous errors
 
-Some errors have detailed explanations: E0499, E0504, E0507, E0596.
+Some errors have detailed explanations: E0499, E0505, E0507, E0596.
 For more information about an error, try `rustc --explain E0499`.