Add test for the known case that doesn't work
This commit is contained in:
parent
5d31e29b56
commit
97bfa106c7
17
tests/ui/pattern/bindings-after-at/bind-by-copy-or-pat.rs
Normal file
17
tests/ui/pattern/bindings-after-at/bind-by-copy-or-pat.rs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//@ known-bug: unknown
|
||||||
|
#![allow(unused)]
|
||||||
|
|
||||||
|
struct A(u32);
|
||||||
|
|
||||||
|
pub fn main() {
|
||||||
|
// The or-pattern bindings are lowered after `x`, which triggers the error.
|
||||||
|
let x @ (A(a) | A(a)) = A(10);
|
||||||
|
// ERROR: use of moved value
|
||||||
|
assert!(x.0 == 10);
|
||||||
|
assert!(a == 10);
|
||||||
|
|
||||||
|
// This works.
|
||||||
|
let (x @ A(a) | x @ A(a)) = A(10);
|
||||||
|
assert!(x.0 == 10);
|
||||||
|
assert!(a == 10);
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
error[E0382]: use of moved value
|
||||||
|
--> $DIR/bind-by-copy-or-pat.rs:8:16
|
||||||
|
|
|
||||||
|
LL | let x @ (A(a) | A(a)) = A(10);
|
||||||
|
| - ^ ----- move occurs because value has type `A`, which does not implement the `Copy` trait
|
||||||
|
| | |
|
||||||
|
| | value used here after move
|
||||||
|
| value moved here
|
||||||
|
|
|
||||||
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
||||||
|
LL | let ref x @ (A(a) | A(a)) = A(10);
|
||||||
|
| +++
|
||||||
|
|
||||||
|
error[E0382]: use of moved value
|
||||||
|
--> $DIR/bind-by-copy-or-pat.rs:8:23
|
||||||
|
|
|
||||||
|
LL | let x @ (A(a) | A(a)) = A(10);
|
||||||
|
| - ^ ----- move occurs because value has type `A`, which does not implement the `Copy` trait
|
||||||
|
| | |
|
||||||
|
| | value used here after move
|
||||||
|
| value moved here
|
||||||
|
|
|
||||||
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
||||||
|
LL | let ref x @ (A(a) | A(a)) = A(10);
|
||||||
|
| +++
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0382`.
|
Loading…
x
Reference in New Issue
Block a user