|  | 
|  | 1 | +error[E0423]: expected value, found type alias `NotCopy` | 
|  | 2 | +  --> $DIR/moves.rs:14:20 | 
|  | 3 | +   | | 
|  | 4 | +LL |         let base = NotCopy; | 
|  | 5 | +   |                    ^^^^^^^ | 
|  | 6 | +   | | 
|  | 7 | +   = note: can't use a type alias as a constructor | 
|  | 8 | + | 
|  | 9 | +error[E0423]: expected value, found type alias `NotCopy` | 
|  | 10 | +  --> $DIR/moves.rs:23:53 | 
|  | 11 | +   | | 
|  | 12 | +LL |         let binder: unsafe<> NotCopy = wrap_binder!(NotCopy); | 
|  | 13 | +   |                                                     ^^^^^^^ | 
|  | 14 | +   | | 
|  | 15 | +   = note: can't use a type alias as a constructor | 
|  | 16 | + | 
|  | 17 | +error[E0423]: expected value, found type alias `NotCopy` | 
|  | 18 | +  --> $DIR/moves.rs:32:65 | 
|  | 19 | +   | | 
|  | 20 | +LL |         let binder: unsafe<> (NotCopy, NotCopy) = wrap_binder!((NotCopy, NotCopy)); | 
|  | 21 | +   |                                                                 ^^^^^^^ | 
|  | 22 | +   | | 
|  | 23 | +   = note: can't use a type alias as a constructor | 
|  | 24 | + | 
|  | 25 | +error[E0423]: expected value, found type alias `NotCopy` | 
|  | 26 | +  --> $DIR/moves.rs:32:74 | 
|  | 27 | +   | | 
|  | 28 | +LL |         let binder: unsafe<> (NotCopy, NotCopy) = wrap_binder!((NotCopy, NotCopy)); | 
|  | 29 | +   |                                                                          ^^^^^^^ | 
|  | 30 | +   | | 
|  | 31 | +   = note: can't use a type alias as a constructor | 
|  | 32 | + | 
| 1 | 33 | warning: the feature `unsafe_binders` is incomplete and may not be safe to use and/or cause compiler crashes | 
| 2 |  | -  --> $DIR/moves.rs:1:12 | 
|  | 34 | +  --> $DIR/moves.rs:3:12 | 
| 3 | 35 |    | | 
| 4 | 36 | LL | #![feature(unsafe_binders)] | 
| 5 | 37 |    |            ^^^^^^^^^^^^^^ | 
| 6 | 38 |    | | 
| 7 | 39 |    = note: see issue #130516 <https://github.com/rust-lang/rust/issues/130516> for more information | 
| 8 | 40 |    = note: `#[warn(incomplete_features)]` on by default | 
| 9 | 41 | 
 | 
| 10 |  | -error[E0382]: use of moved value: `base` | 
| 11 |  | -  --> $DIR/moves.rs:13:14 | 
|  | 42 | +error[E0277]: the trait bound `NotCopyInner: Copy` is not satisfied | 
|  | 43 | +  --> $DIR/moves.rs:15:21 | 
| 12 | 44 |    | | 
| 13 |  | -LL |         let base = NotCopy; | 
| 14 |  | -   |             ---- move occurs because `base` has type `NotCopy`, which does not implement the `Copy` trait | 
| 15 | 45 | LL |         let binder: unsafe<> NotCopy = wrap_binder!(base); | 
| 16 |  | -   |                                                     ---- value moved here | 
| 17 |  | -LL |         drop(base); | 
| 18 |  | -   |              ^^^^ value used here after move | 
|  | 46 | +   |                     ^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `NotCopyInner` | 
| 19 | 47 |    | | 
| 20 |  | -note: if `NotCopy` implemented `Clone`, you could clone the value | 
| 21 |  | -  --> $DIR/moves.rs:7:1 | 
|  | 48 | +   = note: required for `ManuallyDrop<NotCopyInner>` to implement `Copy` | 
|  | 49 | +help: consider annotating `NotCopyInner` with `#[derive(Copy)]` | 
|  | 50 | +   | | 
|  | 51 | +LL + #[derive(Copy)] | 
|  | 52 | +LL | struct NotCopyInner; | 
| 22 | 53 |    | | 
| 23 |  | -LL | struct NotCopy; | 
| 24 |  | -   | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type | 
| 25 |  | -... | 
| 26 |  | -LL |         let binder: unsafe<> NotCopy = wrap_binder!(base); | 
| 27 |  | -   |                                                     ---- you could clone this value | 
| 28 | 54 | 
 | 
| 29 |  | -error[E0382]: use of moved value: `binder` | 
| 30 |  | -  --> $DIR/moves.rs:22:14 | 
|  | 55 | +error[E0277]: the trait bound `NotCopyInner: Copy` is not satisfied | 
|  | 56 | +  --> $DIR/moves.rs:23:21 | 
|  | 57 | +   | | 
|  | 58 | +LL |         let binder: unsafe<> NotCopy = wrap_binder!(NotCopy); | 
|  | 59 | +   |                     ^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `NotCopyInner` | 
|  | 60 | +   | | 
|  | 61 | +   = note: required for `ManuallyDrop<NotCopyInner>` to implement `Copy` | 
|  | 62 | +help: consider annotating `NotCopyInner` with `#[derive(Copy)]` | 
| 31 | 63 |    | | 
| 32 |  | -LL |         drop(unwrap_binder!(binder)); | 
| 33 |  | -   |              ---------------------- value moved here | 
| 34 |  | -LL |         drop(unwrap_binder!(binder)); | 
| 35 |  | -   |              ^^^^^^^^^^^^^^^^^^^^^^ value used here after move | 
|  | 64 | +LL + #[derive(Copy)] | 
|  | 65 | +LL | struct NotCopyInner; | 
| 36 | 66 |    | | 
| 37 |  | -   = note: move occurs because `binder` has type `NotCopy`, which does not implement the `Copy` trait | 
| 38 |  | -   = note: this error originates in the macro `unwrap_binder` (in Nightly builds, run with -Z macro-backtrace for more info) | 
| 39 | 67 | 
 | 
| 40 |  | -error[E0382]: use of moved value: `binder.0` | 
| 41 |  | -  --> $DIR/moves.rs:33:14 | 
|  | 68 | +error[E0277]: the trait bound `NotCopyInner: Copy` is not satisfied | 
|  | 69 | +  --> $DIR/moves.rs:32:21 | 
|  | 70 | +   | | 
|  | 71 | +LL |         let binder: unsafe<> (NotCopy, NotCopy) = wrap_binder!((NotCopy, NotCopy)); | 
|  | 72 | +   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `NotCopyInner` | 
|  | 73 | +   | | 
|  | 74 | +   = note: required for `ManuallyDrop<NotCopyInner>` to implement `Copy` | 
|  | 75 | +   = note: required because it appears within the type `(ManuallyDrop<NotCopyInner>, ManuallyDrop<NotCopyInner>)` | 
|  | 76 | +help: consider annotating `NotCopyInner` with `#[derive(Copy)]` | 
| 42 | 77 |    | | 
| 43 |  | -LL |         drop(unwrap_binder!(binder).0); | 
| 44 |  | -   |              ------------------------ value moved here | 
| 45 |  | -... | 
| 46 |  | -LL |         drop(unwrap_binder!(binder).0); | 
| 47 |  | -   |              ^^^^^^^^^^^^^^^^^^^^^^^^ value used here after move | 
|  | 78 | +LL + #[derive(Copy)] | 
|  | 79 | +LL | struct NotCopyInner; | 
| 48 | 80 |    | | 
| 49 |  | -   = note: move occurs because `binder.0` has type `NotCopy`, which does not implement the `Copy` trait | 
| 50 | 81 | 
 | 
| 51 |  | -error: aborting due to 3 previous errors; 1 warning emitted | 
|  | 82 | +error: aborting due to 7 previous errors; 1 warning emitted | 
| 52 | 83 | 
 | 
| 53 |  | -For more information about this error, try `rustc --explain E0382`. | 
|  | 84 | +Some errors have detailed explanations: E0277, E0423. | 
|  | 85 | +For more information about an error, try `rustc --explain E0277`. | 
0 commit comments