diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-05-05 01:49:32 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-05 01:49:32 +0200 |
| commit | 4bde46e0e3a77d0ebf657aa110ff613130099ea7 (patch) | |
| tree | c4e7cb4f4919c7757f4a6afa79a312124a34e714 /src/test | |
| parent | 2454a68cfbb63aa7b8e09fe05114d5f98b2f9740 (diff) | |
| parent | 34eb2c1d4ff61693ab45863ee0f9ee298148a1ab (diff) | |
| download | rust-4bde46e0e3a77d0ebf657aa110ff613130099ea7.tar.gz rust-4bde46e0e3a77d0ebf657aa110ff613130099ea7.zip | |
Rollup merge of #71587 - matthewjasper:promoted-move-errors, r=nikomatsakis
Report cannot move errors in promoted MIR Closes #70934
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/borrowck/move-error-in-promoted-2.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/borrowck/move-error-in-promoted-2.stderr | 12 | ||||
| -rw-r--r-- | src/test/ui/borrowck/move-error-in-promoted.rs | 17 | ||||
| -rw-r--r-- | src/test/ui/borrowck/move-error-in-promoted.stderr | 12 |
4 files changed, 51 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/move-error-in-promoted-2.rs b/src/test/ui/borrowck/move-error-in-promoted-2.rs new file mode 100644 index 00000000000..13da34f3922 --- /dev/null +++ b/src/test/ui/borrowck/move-error-in-promoted-2.rs @@ -0,0 +1,10 @@ +// Regression test for #70934 + +struct S; + +fn foo() { + &([S][0],); + //~^ ERROR cannot move out of type `[S; 1]` +} + +fn main() {} diff --git a/src/test/ui/borrowck/move-error-in-promoted-2.stderr b/src/test/ui/borrowck/move-error-in-promoted-2.stderr new file mode 100644 index 00000000000..38dba94bdd4 --- /dev/null +++ b/src/test/ui/borrowck/move-error-in-promoted-2.stderr @@ -0,0 +1,12 @@ +error[E0508]: cannot move out of type `[S; 1]`, a non-copy array + --> $DIR/move-error-in-promoted-2.rs:6:7 + | +LL | &([S][0],); + | ^^^^^^ + | | + | cannot move out of here + | move occurs because value has type `S`, which does not implement the `Copy` trait + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0508`. diff --git a/src/test/ui/borrowck/move-error-in-promoted.rs b/src/test/ui/borrowck/move-error-in-promoted.rs new file mode 100644 index 00000000000..b94db645131 --- /dev/null +++ b/src/test/ui/borrowck/move-error-in-promoted.rs @@ -0,0 +1,17 @@ +// Regression test for #70934 + +fn f() { + const C: [S2; 1] = [S2]; + let _ = S1(C[0]).clone(); + //~^ ERROR cannot move out of type `[S2; 1]` +} + +#[derive(Clone)] +struct S1(S2); + +#[derive(Clone)] +struct S2; + +fn main() { + f(); +} diff --git a/src/test/ui/borrowck/move-error-in-promoted.stderr b/src/test/ui/borrowck/move-error-in-promoted.stderr new file mode 100644 index 00000000000..a4432e38da0 --- /dev/null +++ b/src/test/ui/borrowck/move-error-in-promoted.stderr @@ -0,0 +1,12 @@ +error[E0508]: cannot move out of type `[S2; 1]`, a non-copy array + --> $DIR/move-error-in-promoted.rs:5:16 + | +LL | let _ = S1(C[0]).clone(); + | ^^^^ + | | + | cannot move out of here + | move occurs because value has type `S2`, which does not implement the `Copy` trait + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0508`. |
