// Checks that catch_unwind can be used if unwinding is already in progress.
// Used to fail when standard library had been compiled with debug assertions,
// due to incorrect assumption that a current thread is not panicking when
// entering the catch_unwind.
//
//@ run-pass

use std::panic::catch_unwind;

#[allow(dead_code)]
#[derive(Default)]
struct Guard;

impl Drop for Guard {
    fn drop(&mut self) {
        let _ = catch_unwind(|| {});
    }
}

fn main() {
    #[cfg(panic = "unwind")]
    let _ = catch_unwind(|| {
        let _guard = Guard::default();
        panic!();
    });
}
