summaryrefslogtreecommitdiffstats
path: root/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz
rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr')
-rw-r--r--tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr445
1 files changed, 445 insertions, 0 deletions
diff --git a/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr b/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr
new file mode 100644
index 000000000..8546b4bb4
--- /dev/null
+++ b/tests/ui/pattern/bindings-after-at/borrowck-pat-ref-mut-and-ref.stderr
@@ -0,0 +1,445 @@
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:8:9
+ |
+LL | ref mut z @ &mut Some(ref a) => {
+ | ---------^^^^^^^^^^^^^-----^
+ | | |
+ | | immutable borrow, by `a`, occurs here
+ | mutable borrow, by `z`, occurs here
+
+error: cannot borrow value as mutable more than once at a time
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:33:9
+ |
+LL | let ref mut a @ (ref b @ ref mut c) = u(); // sub-in-sub
+ | ---------^^^^-----------------^
+ | | | |
+ | | | another mutable borrow, by `c`, occurs here
+ | | also borrowed as immutable, by `b`, here
+ | first mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:33:22
+ |
+LL | let ref mut a @ (ref b @ ref mut c) = u(); // sub-in-sub
+ | -----^^^---------
+ | | |
+ | | mutable borrow, by `c`, occurs here
+ | immutable borrow, by `b`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:37:9
+ |
+LL | let ref a @ ref mut b = U;
+ | -----^^^---------
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:39:9
+ |
+LL | let ref mut a @ ref b = U;
+ | ---------^^^-----
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:41:9
+ |
+LL | let ref a @ (ref mut b, ref mut c) = (U, U);
+ | -----^^^^---------^^---------^
+ | | | |
+ | | | mutable borrow, by `c`, occurs here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:43:9
+ |
+LL | let ref mut a @ (ref b, ref c) = (U, U);
+ | ---------^^^^-----^^-----^
+ | | | |
+ | | | immutable borrow, by `c`, occurs here
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:46:9
+ |
+LL | let ref mut a @ ref b = u();
+ | ---------^^^-----
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:51:9
+ |
+LL | let ref a @ ref mut b = u();
+ | -----^^^---------
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:57:9
+ |
+LL | let ref mut a @ ref b = U;
+ | ---------^^^-----
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:61:9
+ |
+LL | let ref a @ ref mut b = U;
+ | -----^^^---------
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:67:9
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) => {
+ | ---------^^^^^^-----^
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:67:33
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) => {
+ | ---------^^^^^^^-----^
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:76:9
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) => {
+ | -----^^^^^^---------^
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:76:33
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) => {
+ | -----^^^^^^^---------^
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:87:9
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { *b = U; false } => {}
+ | -----^^^^^^---------^
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:87:33
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { *b = U; false } => {}
+ | -----^^^^^^^---------^
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:94:9
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { *a = Err(U); false } => {}
+ | ---------^^^^^^-----^
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:94:33
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { *a = Err(U); false } => {}
+ | ---------^^^^^^^-----^
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:101:9
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { drop(b); false } => {}
+ | -----^^^^^^---------^
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:101:33
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { drop(b); false } => {}
+ | -----^^^^^^^---------^
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:109:9
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { drop(a); false } => {}
+ | ---------^^^^^^-----^
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:109:33
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { drop(a); false } => {}
+ | ---------^^^^^^^-----^
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:117:9
+ |
+LL | let ref a @ (ref mut b, ref mut c) = (U, U);
+ | -----^^^^---------^^---------^
+ | | | |
+ | | | mutable borrow, by `c`, occurs here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:123:9
+ |
+LL | let ref a @ (ref mut b, ref mut c) = (U, U);
+ | -----^^^^---------^^---------^
+ | | | |
+ | | | mutable borrow, by `c`, occurs here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:129:9
+ |
+LL | let ref a @ (ref mut b, ref mut c) = (U, U);
+ | -----^^^^---------^^---------^
+ | | | |
+ | | | mutable borrow, by `c`, occurs here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:134:9
+ |
+LL | let ref mut a @ (ref b, ref c) = (U, U);
+ | ---------^^^^-----^^-----^
+ | | | |
+ | | | immutable borrow, by `c`, occurs here
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:22:11
+ |
+LL | fn f1(ref a @ ref mut b: U) {}
+ | -----^^^---------
+ | | |
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:24:11
+ |
+LL | fn f2(ref mut a @ ref b: U) {}
+ | ---------^^^-----
+ | | |
+ | | immutable borrow, by `b`, occurs here
+ | mutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:26:11
+ |
+LL | fn f3(ref a @ [ref b, ref mut mid @ .., ref c]: [U; 4]) {}
+ | -----^^^^^^^^^^^----------------^^^^^^^^
+ | | |
+ | | mutable borrow, by `mid`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:28:22
+ |
+LL | fn f4_also_moved(ref a @ ref mut b @ c: U) {}
+ | -----^^^-------------
+ | | | |
+ | | | also moved into `c` here
+ | | mutable borrow, by `b`, occurs here
+ | immutable borrow, by `a`, occurs here
+
+error: cannot move out of value because it is borrowed
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:28:30
+ |
+LL | fn f4_also_moved(ref a @ ref mut b @ c: U) {}
+ | ---------^^^-
+ | | |
+ | | value moved into `c` here
+ | value borrowed, by `b`, here
+
+error[E0502]: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:8:31
+ |
+LL | ref mut z @ &mut Some(ref a) => {
+ | --------- ^^^^^ immutable borrow occurs here
+ | |
+ | mutable borrow occurs here
+...
+LL | **z = None;
+ | ---------- mutable borrow later used here
+
+error[E0502]: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:46:9
+ |
+LL | let ref mut a @ ref b = u();
+ | ^^^^^^^^^ ----- immutable borrow occurs here
+ | |
+ | mutable borrow occurs here
+...
+LL | drop(b);
+ | - immutable borrow later used here
+
+error[E0502]: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:51:9
+ |
+LL | let ref a @ ref mut b = u();
+ | ^^^^^ --------- mutable borrow occurs here
+ | |
+ | immutable borrow occurs here
+...
+LL | *b = u();
+ | -------- mutable borrow later used here
+
+error[E0502]: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:76:20
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) => {
+ | ----- ^^^^^^^^^ mutable borrow occurs here
+ | |
+ | immutable borrow occurs here
+...
+LL | drop(a);
+ | - immutable borrow later used here
+
+error[E0502]: cannot borrow value as mutable because it is also borrowed as immutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:76:45
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) => {
+ | ----- ^^^^^^^^^ mutable borrow occurs here
+ | |
+ | immutable borrow occurs here
+...
+LL | drop(a);
+ | - immutable borrow later used here
+
+error[E0594]: cannot assign to `*b`, as it is immutable for the pattern guard
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:87:61
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { *b = U; false } => {}
+ | ^^^^^^ cannot assign
+ |
+ = note: variables bound in patterns are immutable until the end of the pattern guard
+
+error[E0594]: cannot assign to `*a`, as it is immutable for the pattern guard
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:94:61
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { *a = Err(U); false } => {}
+ | ^^^^^^^^^^^ cannot assign
+ |
+ = note: variables bound in patterns are immutable until the end of the pattern guard
+
+error[E0507]: cannot move out of `b` in pattern guard
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:101:66
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { drop(b); false } => {}
+ | ^ move occurs because `b` has type `&mut U`, which does not implement the `Copy` trait
+ |
+ = note: variables bound in patterns cannot be moved from until after the end of the pattern guard
+
+error[E0507]: cannot move out of `b` in pattern guard
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:101:66
+ |
+LL | ref a @ Ok(ref mut b) | ref a @ Err(ref mut b) if { drop(b); false } => {}
+ | ^ move occurs because `b` has type `&mut U`, which does not implement the `Copy` trait
+ |
+ = note: variables bound in patterns cannot be moved from until after the end of the pattern guard
+
+error[E0507]: cannot move out of `a` in pattern guard
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:109:66
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { drop(a); false } => {}
+ | ^ move occurs because `a` has type `&mut Result<U, U>`, which does not implement the `Copy` trait
+ |
+ = note: variables bound in patterns cannot be moved from until after the end of the pattern guard
+
+error[E0507]: cannot move out of `a` in pattern guard
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:109:66
+ |
+LL | ref mut a @ Ok(ref b) | ref mut a @ Err(ref b) if { drop(a); false } => {}
+ | ^ move occurs because `a` has type `&mut Result<U, U>`, which does not implement the `Copy` trait
+ |
+ = note: variables bound in patterns cannot be moved from until after the end of the pattern guard
+
+error[E0502]: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:117:9
+ |
+LL | let ref a @ (ref mut b, ref mut c) = (U, U);
+ | ^^^^^ --------- mutable borrow occurs here
+ | |
+ | immutable borrow occurs here
+...
+LL | *b = U;
+ | ------ mutable borrow later used here
+
+error[E0502]: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:123:9
+ |
+LL | let ref a @ (ref mut b, ref mut c) = (U, U);
+ | ^^^^^ --------- mutable borrow occurs here
+ | |
+ | immutable borrow occurs here
+...
+LL | *b = U;
+ | ------ mutable borrow later used here
+
+error[E0502]: cannot borrow value as immutable because it is also borrowed as mutable
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:129:9
+ |
+LL | let ref a @ (ref mut b, ref mut c) = (U, U);
+ | ^^^^^ --------- mutable borrow occurs here
+ | |
+ | immutable borrow occurs here
+LL |
+LL | *b = U;
+ | ------ mutable borrow later used here
+
+error[E0382]: borrow of moved value
+ --> $DIR/borrowck-pat-ref-mut-and-ref.rs:28:30
+ |
+LL | fn f4_also_moved(ref a @ ref mut b @ c: U) {}
+ | ----- ^^^^^^^^^ - value moved here
+ | | |
+ | | value borrowed here after move
+ | move occurs because value has type `U`, which does not implement the `Copy` trait
+
+error: aborting due to 47 previous errors
+
+Some errors have detailed explanations: E0382, E0502, E0507, E0594.
+For more information about an error, try `rustc --explain E0382`.