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