rust/tests/mir-opt/matches_reduce_branches.rs

62 lines
1.1 KiB
Rust

// skip-filecheck
//@ 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();
}