Rollup merge of #93086 - c410-f3r:let-guard, r=Mark-Simulacrum
Add tests to ensure that `let_chains` works with `if_let_guard` The current machinery already makes such combination possible but lacks tests. cc `@matthewjasper`
This commit is contained in:
commit
0a9aaec8eb
2 changed files with 26 additions and 2 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue