Add tests to ensure that let_chains works with if_let_guard

This commit is contained in:
Caio 2022-01-19 16:23:44 -03:00
parent 5e57faa78a
commit f491a9f601
2 changed files with 26 additions and 2 deletions

View File

@ -1,6 +1,6 @@
// check-pass
#![feature(let_chains)]
#![feature(if_let_guard, let_chains)]
use std::ops::Range;
@ -16,6 +16,16 @@ fn main() {
&& let None = local_start {
}
match opt {
Some(ref first) if let second = first && let _third = second => {},
_ => {}
}
match opt {
Some(ref first) if let Range { start: local_start, end: _ } = first
&& let None = local_start => {},
_ => {}
}
while let first = &opt && let Some(ref second) = first && let None = second.start {
}
while let Some(ref first) = opt && let second = first && let _third = second {

View File

@ -1,6 +1,6 @@
// run-pass
#![feature(let_chains)]
#![feature(if_let_guard, let_chains)]
fn check_if_let(opt: Option<Option<Option<i32>>>, value: i32) -> bool {
if let Some(first) = opt
@ -15,6 +15,17 @@ fn check_if_let(opt: Option<Option<Option<i32>>>, value: i32) -> bool {
}
}
fn check_let_guard(opt: Option<Option<Option<i32>>>, value: i32) -> bool {
match opt {
Some(first) if let Some(second) = first && let Some(third) = second && third == value => {
true
}
_ => {
false
}
}
}
fn check_while_let(opt: Option<Option<Option<i32>>>, value: i32) -> bool {
while let Some(first) = opt
&& let Some(second) = first
@ -30,6 +41,9 @@ fn main() {
assert_eq!(check_if_let(Some(Some(Some(1))), 1), true);
assert_eq!(check_if_let(Some(Some(Some(1))), 9), false);
assert_eq!(check_let_guard(Some(Some(Some(1))), 1), true);
assert_eq!(check_let_guard(Some(Some(Some(1))), 9), false);
assert_eq!(check_while_let(Some(Some(Some(1))), 1), true);
assert_eq!(check_while_let(Some(Some(Some(1))), 9), false);
}