mirror of https://github.com/rust-lang/rust
73 lines
1.3 KiB
Rust
73 lines
1.3 KiB
Rust
// Ensure that temporaries in if-let guards live for the arm
|
|
// regression test for #118593
|
|
|
|
//@ check-pass
|
|
|
|
#![feature(if_let_guard)]
|
|
#![feature(let_chains)]
|
|
|
|
fn get_temp() -> Option<String> {
|
|
None
|
|
}
|
|
|
|
fn let_guard(num: u8) {
|
|
match num {
|
|
1 | 2 if let Some(ref a) = get_temp() => {
|
|
let _b = a;
|
|
}
|
|
_ => {}
|
|
}
|
|
match num {
|
|
3 | 4 if let Some(ref mut c) = get_temp() => {
|
|
let _d = c;
|
|
}
|
|
_ => {}
|
|
}
|
|
}
|
|
|
|
fn let_let_chain_guard(num: u8) {
|
|
match num {
|
|
5 | 6
|
|
if let Some(ref a) = get_temp()
|
|
&& let Some(ref b) = get_temp() =>
|
|
{
|
|
let _x = a;
|
|
let _y = b;
|
|
}
|
|
_ => {}
|
|
}
|
|
match num {
|
|
7 | 8
|
|
if let Some(ref mut c) = get_temp()
|
|
&& let Some(ref mut d) = get_temp() =>
|
|
{
|
|
let _w = c;
|
|
let _z = d;
|
|
}
|
|
_ => {}
|
|
}
|
|
}
|
|
|
|
fn let_cond_chain_guard(num: u8) {
|
|
match num {
|
|
9 | 10
|
|
if let Some(ref a) = get_temp()
|
|
&& true =>
|
|
{
|
|
let _x = a;
|
|
}
|
|
_ => {}
|
|
}
|
|
match num {
|
|
11 | 12
|
|
if let Some(ref mut b) = get_temp()
|
|
&& true =>
|
|
{
|
|
let _w = b;
|
|
}
|
|
_ => {}
|
|
}
|
|
}
|
|
|
|
fn main() {}
|