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