| //@ run-pass | |
| //@ needs-unwind | |
| // Checks that nested panics work correctly. | |
| use std::panic::catch_unwind; | |
| fn double() { | |
| struct Double; | |
| impl Drop for Double { | |
| fn drop(&mut self) { | |
| let _ = catch_unwind(|| panic!("twice")); | |
| } | |
| } | |
| let _d = Double; | |
| panic!("once"); | |
| } | |
| fn main() { | |
| assert!(catch_unwind(|| double()).is_err()); | |
| } |