diff options
| author | Nadrieril <nadrieril+git@gmail.com> | 2024-01-21 23:58:40 +0100 |
|---|---|---|
| committer | Nadrieril <nadrieril+git@gmail.com> | 2024-01-25 02:35:04 +0100 |
| commit | 3ea464f36aa8e5bcc0367891e4a77ce5d643ea3a (patch) | |
| tree | b7bf93429ba335dfb153cb2490cad2a1f3be8d7b | |
| parent | cd6d8f2a04528f827ad3d399581c0f3502b15a72 (diff) | |
| download | rust-3ea464f36aa8e5bcc0367891e4a77ce5d643ea3a.tar.gz rust-3ea464f36aa8e5bcc0367891e4a77ce5d643ea3a.zip | |
Add tests
| -rw-r--r-- | tests/ui/pattern/bindings-after-at/bind-by-copy.rs | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/tests/ui/pattern/bindings-after-at/bind-by-copy.rs b/tests/ui/pattern/bindings-after-at/bind-by-copy.rs index 2b349f0ed5f..08e1d55f773 100644 --- a/tests/ui/pattern/bindings-after-at/bind-by-copy.rs +++ b/tests/ui/pattern/bindings-after-at/bind-by-copy.rs @@ -1,13 +1,29 @@ -// run-pass +#![allow(unused)] // Test copy -struct A { a: i32, b: i32 } -struct B { a: i32, b: C } -struct D { a: i32, d: C } -#[derive(Copy,Clone)] -struct C { c: i32 } +struct A { + a: i32, + b: i32, +} +struct B { + a: i32, + b: C, +} +struct D { + a: i32, + d: C, +} +#[derive(Copy, Clone)] +struct C { + c: i32, +} +enum E { + E { a: i32, e: C }, + NotE, +} +#[rustfmt::skip] pub fn main() { match (A {a: 10, b: 20}) { x@A {a, b: 20} => { assert!(x.a == 10); assert!(a == 10); } @@ -23,6 +39,25 @@ pub fn main() { y.d.c = 30; assert_eq!(d.c, 20); + match (E::E { a: 10, e: C { c: 20 } }) { + x @ E::E{ a, e: C { c } } => { + //~^ ERROR use of moved value + assert!(matches!(x, E::E { a: 10, e: C { c: 20 } })); + assert!(a == 10); + assert!(c == 20); + } + _ => panic!(), + } + match (E::E { a: 10, e: C { c: 20 } }) { + mut x @ E::E{ a, e: C { mut c } } => { + //~^ ERROR use of moved value + x = E::NotE; + c += 30; + assert_eq!(c, 50); + } + _ => panic!(), + } + let some_b = Some(B { a: 10, b: C { c: 20 } }); // in irrefutable pattern |
