//@ revisions: edition2021 edition2024 | |
//@ needs-subprocess | |
//@ [edition2024] edition: 2024 | |
//@ run-pass | |
//@ needs-unwind | |
use std::sync::Mutex; | |
struct PanicOnDrop; | |
impl Drop for PanicOnDrop { | |
fn drop(&mut self) { | |
panic!() | |
} | |
} | |
fn f(m: &Mutex<i32>) -> i32 { | |
let _x = PanicOnDrop; | |
*m.lock().unwrap() | |
} | |
fn main() { | |
let m = Mutex::new(0); | |
let _ = std::panic::catch_unwind(|| f(&m)); | |
#[cfg(edition2024)] | |
assert!(m.lock().is_ok()); | |
#[cfg(edition2021)] | |
assert!(m.lock().is_err()); | |
} |