Skip to content

Commit

Permalink
Rollup merge of #93086 - c410-f3r:let-guard, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
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`
  • Loading branch information
matthiaskrgr authored Jan 20, 2022
2 parents 35a53b2 + f491a9f commit 0a9aaec
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
12 changes: 11 additions & 1 deletion src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// check-pass

#![feature(let_chains)]
#![feature(if_let_guard, let_chains)]

use std::ops::Range;

Expand All @@ -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 {
Expand Down
16 changes: 15 additions & 1 deletion src/test/ui/rfc-2497-if-let-chains/then-else-blocks.rs
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -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);
}

0 comments on commit 0a9aaec

Please sign in to comment.