about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNadrieril <nadrieril+git@gmail.com>2024-04-08 20:05:23 +0200
committerNadrieril <nadrieril+git@gmail.com>2024-04-20 16:04:06 +0200
commit217a4dff7da0e4be2c22fd8f822cb543745c6727 (patch)
tree1514cb76d9a3d94e8bc66ed0e834e84c962a74da
parent436c61266c7e9c4d6b7a57a8a6170700eda68fd0 (diff)
downloadrust-217a4dff7da0e4be2c22fd8f822cb543745c6727.tar.gz
rust-217a4dff7da0e4be2c22fd8f822cb543745c6727.zip
Test or-patterns inside deref patterns
-rw-r--r--tests/ui/pattern/deref-patterns/bindings.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/tests/ui/pattern/deref-patterns/bindings.rs b/tests/ui/pattern/deref-patterns/bindings.rs
index 4f72058af8f..5881e4166a4 100644
--- a/tests/ui/pattern/deref-patterns/bindings.rs
+++ b/tests/ui/pattern/deref-patterns/bindings.rs
@@ -37,6 +37,17 @@ fn ref_mut(val: u32) -> u32 {
     *x
 }
 
+#[rustfmt::skip]
+fn or_and_guard(tuple: (u32, u32)) -> u32 {
+    let mut sum = 0;
+    let b = Box::new(tuple);
+    match b {
+        deref!((x, _) | (_, x)) if { sum += x; false } => {},
+        _ => {},
+    }
+    sum
+}
+
 fn main() {
     assert_eq!(simple_vec(vec![1]), 1);
     assert_eq!(simple_vec(vec![1, 2]), 202);
@@ -48,5 +59,6 @@ fn main() {
     assert_eq!(nested_vec(vec![vec![1, 2, 3]]), 6);
     assert_eq!(nested_vec(vec![vec![], vec![1, 2, 3]]), 1);
 
-    assert_eq!(ref_mut(42), 42)
+    assert_eq!(ref_mut(42), 42);
+    assert_eq!(or_and_guard((10, 32)), 42);
 }