// This test checks that the lint `if_let_rescope` only actions // when Edition 2021 or prior is targeted here because the lint should work especially // when edition migration towards 2024 is executed. //@ revisions: edition2021 edition2024 //@ [edition2021] edition: 2021 //@ [edition2024] edition: 2024 //@ [edition2024] check-pass #![deny(if_let_rescope)] #![allow(irrefutable_let_patterns)] struct Droppy; impl Drop for Droppy { fn drop(&mut self) { println!("dropped"); } } impl Droppy { fn get(&self) -> Option { None } } fn main() { if let Some(_value) = Droppy.get() { //[edition2021]~^ ERROR: `if let` assigns a shorter lifetime since Edition 2024 //[edition2021]~| HELP: a `match` with a single arm can preserve the drop order up to Edition 2021 //[edition2021]~| WARN: this changes meaning in Rust 2024 } else { //[edition2021]~^ HELP: the value is now dropped here in Edition 2024 } }