about summary refs log tree commit diff
path: root/tests/ui/nll/move-errors.stderr
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/nll/move-errors.stderr')
-rw-r--r--tests/ui/nll/move-errors.stderr210
1 files changed, 210 insertions, 0 deletions
diff --git a/tests/ui/nll/move-errors.stderr b/tests/ui/nll/move-errors.stderr
new file mode 100644
index 00000000000..58b8aa31d4c
--- /dev/null
+++ b/tests/ui/nll/move-errors.stderr
@@ -0,0 +1,210 @@
+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 removing the dereference here
+   |
+LL -     let b = *a;
+LL +     let b = 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
+   |
+LL |     let b = &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 removing the dereference here
+   |
+LL -     let s = **r;
+LL +     let s = *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 removing the dereference here
+   |
+LL -     let s = *r;
+LL +     let s = 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
+   |
+LL |     let a = &[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;
+   |           -    ^^
+   |           |
+   |           data moved here
+   |           move occurs because `s` has type `String`, which does not implement the `Copy` trait
+   |
+help: consider removing the dereference here
+   |
+LL -     let A(s) = *a;
+LL +     let A(s) = a;
+   |
+
+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
+   |
+help: consider borrowing the pattern binding
+   |
+LL |     let C(D(ref s)) = c;
+   |             +++
+
+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
+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
+help: consider borrowing here
+   |
+LL |     match &x[0] {
+   |           +
+
+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
+   |
+help: consider borrowing the pattern binding
+   |
+LL |         B::U(D(ref s)) => (),
+   |                +++
+
+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
+   |
+help: consider borrowing the pattern binding
+   |
+LL |         (D(ref s), &t) => (),
+   |            +++
+
+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
+   |
+help: consider borrowing the pattern binding
+   |
+LL |         (D(s), &ref t) => (),
+   |                 +++
+
+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
+help: consider borrowing the pattern binding
+   |
+LL |         F(ref s, mut t) => (),
+   |           +++
+help: consider borrowing the pattern binding
+   |
+LL |         F(s, ref mut t) => (),
+   |              +++
+
+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 {
+   |           ^^
+LL |
+LL |         Ok(s) | Err(s) => (),
+   |            -
+   |            |
+   |            data moved here
+   |            move occurs because `s` has type `String`, which does not implement the `Copy` trait
+   |
+help: consider removing the dereference here
+   |
+LL -     match *x {
+LL +     match x {
+   |
+
+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`.