about summary refs log tree commit diff
path: root/tests/ui/let-else/let-else-run-pass.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/let-else/let-else-run-pass.rs')
-rw-r--r--tests/ui/let-else/let-else-run-pass.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/ui/let-else/let-else-run-pass.rs b/tests/ui/let-else/let-else-run-pass.rs
new file mode 100644
index 00000000000..a0fb6c683f8
--- /dev/null
+++ b/tests/ui/let-else/let-else-run-pass.rs
@@ -0,0 +1,35 @@
+// run-pass
+
+
+
+fn main() {
+    #[allow(dead_code)]
+    enum MyEnum {
+        A(String),
+        B { f: String },
+        C,
+    }
+    // ref binding to non-copy value and or-pattern
+    let (MyEnum::A(ref x) | MyEnum::B { f: ref x }) = (MyEnum::B { f: String::new() }) else {
+        panic!();
+    };
+    assert_eq!(x, "");
+
+    // nested let-else
+    let mut x = 1;
+    loop {
+        let 4 = x else {
+            let 3 = x else {
+                x += 1;
+                continue;
+            };
+            break;
+        };
+        panic!();
+    }
+    assert_eq!(x, 3);
+
+    // else return
+    let Some(1) = Some(2) else { return };
+    panic!();
+}