rust/tests/ui/rfcs/rfc-2294-if-let-guard/const-expr.rs

27 lines
663 B
Rust

// Ensure if let guards can be used in constant expressions.
//@ build-pass
#![feature(if_let_guard)]
const fn match_if_let(x: Option<i32>, y: Option<i32>) -> i32 {
match x {
None if let Some(a @ 5) = y => a,
Some(z) if let (Some(_), 12) = (y, z) => 2,
_ => 3,
}
}
const ASSERTS: usize = {
assert!(match_if_let(None, Some(5)) == 5);
assert!(match_if_let(Some(12), Some(3)) == 2);
assert!(match_if_let(None, Some(4)) == 3);
assert!(match_if_let(Some(11), Some(3)) == 3);
assert!(match_if_let(Some(12), None) == 3);
assert!(match_if_let(None, None) == 3);
0
};
fn main() {
let _: [(); ASSERTS];
}