diff options
| author | Caio <c410.f3r@gmail.com> | 2022-01-19 16:23:44 -0300 |
|---|---|---|
| committer | Caio <c410.f3r@gmail.com> | 2022-01-19 16:23:44 -0300 |
| commit | f491a9f601a8ad0efe7f38de5b807a2c07774ae1 (patch) | |
| tree | bc97e55d5deffc828487a78a57e6fdcb6c4dd76e /src/test | |
| parent | 5e57faa78aa7661c6000204591558f6665f11abc (diff) | |
| download | rust-f491a9f601a8ad0efe7f38de5b807a2c07774ae1.tar.gz rust-f491a9f601a8ad0efe7f38de5b807a2c07774ae1.zip | |
Add tests to ensure that let_chains works with if_let_guard
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.rs | 12 | ||||
| -rw-r--r-- | src/test/ui/rfc-2497-if-let-chains/then-else-blocks.rs | 16 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.rs b/src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.rs index 5915cb9df26..945c665e35d 100644 --- a/src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.rs +++ b/src/test/ui/rfc-2497-if-let-chains/irrefutable-lets.rs @@ -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 { diff --git a/src/test/ui/rfc-2497-if-let-chains/then-else-blocks.rs b/src/test/ui/rfc-2497-if-let-chains/then-else-blocks.rs index 0856a105206..e061174f667 100644 --- a/src/test/ui/rfc-2497-if-let-chains/then-else-blocks.rs +++ b/src/test/ui/rfc-2497-if-let-chains/then-else-blocks.rs @@ -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); } |
