]> git.lizzy.rs Git - rust.git/blob - src/test/ui/panics/panic-handler-chain.rs
Rollup merge of #89235 - yaahc:junit-formatting, r=kennytm
[rust.git] / src / test / ui / panics / panic-handler-chain.rs
1 // run-pass
2 #![allow(stable_features)]
3
4 // ignore-emscripten no threads support
5
6 #![feature(std_panic)]
7
8 use std::sync::atomic::{AtomicUsize, Ordering};
9 use std::panic;
10 use std::thread;
11
12 static A: AtomicUsize = AtomicUsize::new(0);
13 static B: AtomicUsize = AtomicUsize::new(0);
14
15 fn main() {
16     panic::set_hook(Box::new(|_| { A.fetch_add(1, Ordering::SeqCst); }));
17     let hook = panic::take_hook();
18     panic::set_hook(Box::new(move |info| {
19         B.fetch_add(1, Ordering::SeqCst);
20         hook(info);
21     }));
22
23     let _ = thread::spawn(|| {
24         panic!();
25     }).join();
26
27     assert_eq!(1, A.load(Ordering::SeqCst));
28     assert_eq!(1, B.load(Ordering::SeqCst));
29 }