mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 01:04:03 +00:00
62 lines
1.1 KiB
Rust
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();
|
|
}
|