| //@ edition: 2024 |
| //@ compile-flags: -Z validate-mir -Zunstable-options |
| |
| #![feature(if_let_rescope)] |
| #![deny(if_let_rescope)] |
| |
| struct Droppy; |
| impl Drop for Droppy { |
| fn drop(&mut self) { |
| println!("dropped"); |
| } |
| } |
| impl Droppy { |
| fn get_ref(&self) -> Option<&u8> { |
| None |
| } |
| } |
| |
| fn do_something<T>(_: &T) {} |
| |
| fn main() { |
| do_something(if let Some(value) = Droppy.get_ref() { value } else { &0 }); |
| //~^ ERROR: temporary value dropped while borrowed |
| do_something(if let Some(value) = Droppy.get_ref() { |
| //~^ ERROR: temporary value dropped while borrowed |
| value |
| } else if let Some(value) = Droppy.get_ref() { |
| //~^ ERROR: temporary value dropped while borrowed |
| value |
| } else { |
| &0 |
| }); |
| } |