summaryrefslogtreecommitdiffstats
path: root/src/test/ui/nll/move-errors.stderr
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/nll/move-errors.stderr')
-rw-r--r--src/test/ui/nll/move-errors.stderr152
1 files changed, 152 insertions, 0 deletions
diff --git a/src/test/ui/nll/move-errors.stderr b/src/test/ui/nll/move-errors.stderr
new file mode 100644
index 000000000..b03fcf70b
--- /dev/null
+++ b/src/test/ui/nll/move-errors.stderr
@@ -0,0 +1,152 @@
+error[E0507]: cannot move out of `*a` which is behind a shared reference
+ --> $DIR/move-errors.rs:6:13
+ |
+LL | let b = *a;
+ | ^^
+ | |
+ | move occurs because `*a` has type `A`, which does not implement the `Copy` trait
+ | help: consider borrowing here: `&*a`
+
+error[E0508]: cannot move out of type `[A; 1]`, a non-copy array
+ --> $DIR/move-errors.rs:12:13
+ |
+LL | let b = a[0];
+ | ^^^^
+ | |
+ | cannot move out of here
+ | move occurs because `a[_]` has type `A`, which does not implement the `Copy` trait
+ | help: consider borrowing here: `&a[0]`
+
+error[E0507]: cannot move out of `**r` which is behind a shared reference
+ --> $DIR/move-errors.rs:19:13
+ |
+LL | let s = **r;
+ | ^^^
+ | |
+ | move occurs because `**r` has type `A`, which does not implement the `Copy` trait
+ | help: consider borrowing here: `&**r`
+
+error[E0507]: cannot move out of an `Rc`
+ --> $DIR/move-errors.rs:27:13
+ |
+LL | let s = *r;
+ | ^^
+ | |
+ | move occurs because value has type `A`, which does not implement the `Copy` trait
+ | help: consider borrowing here: `&*r`
+
+error[E0508]: cannot move out of type `[A; 1]`, a non-copy array
+ --> $DIR/move-errors.rs:32:13
+ |
+LL | let a = [A("".to_string())][0];
+ | ^^^^^^^^^^^^^^^^^^^^^^
+ | |
+ | cannot move out of here
+ | move occurs because value has type `A`, which does not implement the `Copy` trait
+ | help: consider borrowing here: `&[A("".to_string())][0]`
+
+error[E0507]: cannot move out of `a` which is behind a shared reference
+ --> $DIR/move-errors.rs:38:16
+ |
+LL | let A(s) = *a;
+ | - ^^ help: consider borrowing here: `&*a`
+ | |
+ | data moved here
+ | move occurs because `s` has type `String`, which does not implement the `Copy` trait
+
+error[E0509]: cannot move out of type `D`, which implements the `Drop` trait
+ --> $DIR/move-errors.rs:44:19
+ |
+LL | let C(D(s)) = c;
+ | - ^ cannot move out of here
+ | |
+ | data moved here
+ | move occurs because `s` has type `String`, which does not implement the `Copy` trait
+
+error[E0507]: cannot move out of `*a` which is behind a shared reference
+ --> $DIR/move-errors.rs:51:9
+ |
+LL | b = *a;
+ | ^^ move occurs because `*a` has type `A`, which does not implement the `Copy` trait
+
+error[E0508]: cannot move out of type `[B; 1]`, a non-copy array
+ --> $DIR/move-errors.rs:74:11
+ |
+LL | match x[0] {
+ | ^^^^
+ | |
+ | cannot move out of here
+ | help: consider borrowing here: `&x[0]`
+LL |
+LL | B::U(d) => (),
+ | - data moved here
+LL | B::V(s) => (),
+ | - ...and here
+ |
+ = note: move occurs because these variables have types that don't implement the `Copy` trait
+
+error[E0509]: cannot move out of type `D`, which implements the `Drop` trait
+ --> $DIR/move-errors.rs:83:11
+ |
+LL | match x {
+ | ^ cannot move out of here
+...
+LL | B::U(D(s)) => (),
+ | -
+ | |
+ | data moved here
+ | move occurs because `s` has type `String`, which does not implement the `Copy` trait
+
+error[E0509]: cannot move out of type `D`, which implements the `Drop` trait
+ --> $DIR/move-errors.rs:92:11
+ |
+LL | match x {
+ | ^ cannot move out of here
+...
+LL | (D(s), &t) => (),
+ | -
+ | |
+ | data moved here
+ | move occurs because `s` has type `String`, which does not implement the `Copy` trait
+
+error[E0507]: cannot move out of `*x.1` which is behind a shared reference
+ --> $DIR/move-errors.rs:92:11
+ |
+LL | match x {
+ | ^
+...
+LL | (D(s), &t) => (),
+ | -
+ | |
+ | data moved here
+ | move occurs because `t` has type `String`, which does not implement the `Copy` trait
+
+error[E0509]: cannot move out of type `F`, which implements the `Drop` trait
+ --> $DIR/move-errors.rs:102:11
+ |
+LL | match x {
+ | ^ cannot move out of here
+LL |
+LL | F(s, mut t) => (),
+ | - ----- ...and here
+ | |
+ | data moved here
+ |
+ = note: move occurs because these variables have types that don't implement the `Copy` trait
+
+error[E0507]: cannot move out of `x` as enum variant `Err` which is behind a shared reference
+ --> $DIR/move-errors.rs:110:11
+ |
+LL | match *x {
+ | ^^ help: consider borrowing here: `&*x`
+LL |
+LL | Ok(s) | Err(s) => (),
+ | -
+ | |
+ | data moved here
+ | move occurs because `s` has type `String`, which does not implement the `Copy` trait
+
+error: aborting due to 14 previous errors
+
+Some errors have detailed explanations: E0507, E0508, E0509.
+For more information about an error, try `rustc --explain E0507`.