about summary refs log tree commit diff
path: root/tests/mir-opt/matches_reduce_branches.rs
diff options
context:
space:
mode:
authorAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-05 09:13:28 +0100
committerAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-11 09:32:08 +0000
commitcf2dff2b1e3fa55fa5415d524200070d0d7aacfe (patch)
tree40a88d9a46aaf3e8870676eb2538378b75a263eb /tests/mir-opt/matches_reduce_branches.rs
parentca855e6e42787ecd062d81d53336fe6788ef51a9 (diff)
downloadrust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.tar.gz
rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.zip
Move /src/test to /tests
Diffstat (limited to 'tests/mir-opt/matches_reduce_branches.rs')
-rw-r--r--tests/mir-opt/matches_reduce_branches.rs60
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/mir-opt/matches_reduce_branches.rs b/tests/mir-opt/matches_reduce_branches.rs
new file mode 100644
index 00000000000..a81d5f7b4e8
--- /dev/null
+++ b/tests/mir-opt/matches_reduce_branches.rs
@@ -0,0 +1,60 @@
+// unit-test: MatchBranchSimplification
+
+
+// EMIT_MIR matches_reduce_branches.foo.MatchBranchSimplification.diff
+// EMIT_MIR matches_reduce_branches.bar.MatchBranchSimplification.diff
+// EMIT_MIR matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff
+
+fn foo(bar: Option<()>) {
+    if matches!(bar, None) {
+        ()
+    }
+}
+
+fn bar(i: i32) -> (bool, bool, bool, bool) {
+    let a;
+    let b;
+    let c;
+    let d;
+
+    match i {
+        7 => {
+            a = false;
+            b = true;
+            c = false;
+            d = true;
+            ()
+        }
+        _ => {
+            a = true;
+            b = false;
+            c = false;
+            d = true;
+            ()
+        }
+    };
+
+    (a, b, c, d)
+}
+
+fn match_nested_if() -> bool {
+    let val = match () {
+        () if if if if true { true } else { false } { true } else { false } {
+            true
+        } else {
+            false
+        } =>
+        {
+            true
+        }
+        _ => false,
+    };
+    val
+}
+
+fn main() {
+    let _ = foo(None);
+    let _ = foo(Some(()));
+    let _ = bar(0);
+    let _ = match_nested_if();
+}