about summary refs log tree commit diff
path: root/tests/ui/pattern
diff options
context:
space:
mode:
authorNadrieril <nadrieril+git@gmail.com>2024-04-04 00:46:35 +0200
committerNadrieril <nadrieril+git@gmail.com>2024-04-20 15:59:54 +0200
commit377e095371ae99dfdd61d5b50d4a43422b34ca23 (patch)
tree812a04dd7c9a8b14798db33e3afd3c5ffa7a70a5 /tests/ui/pattern
parent5c4909b8e18eb4fcc7e3b8b6826be5890aa8e529 (diff)
downloadrust-377e095371ae99dfdd61d5b50d4a43422b34ca23.tar.gz
rust-377e095371ae99dfdd61d5b50d4a43422b34ca23.zip
Allow mutable bindings inside deref patterns
Diffstat (limited to 'tests/ui/pattern')
-rw-r--r--tests/ui/pattern/deref-patterns/bindings.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/ui/pattern/deref-patterns/bindings.rs b/tests/ui/pattern/deref-patterns/bindings.rs
index c0c8a70dbf0..4f72058af8f 100644
--- a/tests/ui/pattern/deref-patterns/bindings.rs
+++ b/tests/ui/pattern/deref-patterns/bindings.rs
@@ -24,6 +24,19 @@ fn nested_vec(vecvec: Vec<Vec<u32>>) -> u32 {
     }
 }
 
+fn ref_mut(val: u32) -> u32 {
+    let mut b = Box::new(0u32);
+    match &mut b {
+        deref!(_x) if false => unreachable!(),
+        deref!(x) => {
+            *x = val;
+        }
+        _ => unreachable!(),
+    }
+    let deref!(x) = &b else { unreachable!() };
+    *x
+}
+
 fn main() {
     assert_eq!(simple_vec(vec![1]), 1);
     assert_eq!(simple_vec(vec![1, 2]), 202);
@@ -34,4 +47,6 @@ fn main() {
     assert_eq!(nested_vec(vec![vec![1, 42]]), 42);
     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)
 }