about summary refs log tree commit diff
path: root/library/proc_macro/src
diff options
context:
space:
mode:
authorBadel2 <2badel2@gmail.com>2022-01-05 22:42:21 +0100
committerBadel2 <2badel2@gmail.com>2022-01-07 17:28:20 +0100
commit8bdf5c3de6c6e4e01f7f6241cd0f2a606c7486df (patch)
tree795cf4e3727479f3f82c0ee6eba205b91d9fee6d /library/proc_macro/src
parente012a191d768adeda1ee36a99ef8b92d51920154 (diff)
downloadrust-8bdf5c3de6c6e4e01f7f6241cd0f2a606c7486df.tar.gz
rust-8bdf5c3de6c6e4e01f7f6241cd0f2a606c7486df.zip
Implement panic::update_hook
Diffstat (limited to 'library/proc_macro/src')
-rw-r--r--library/proc_macro/src/bridge/client.rs21
-rw-r--r--library/proc_macro/src/lib.rs1
2 files changed, 12 insertions, 10 deletions
diff --git a/library/proc_macro/src/bridge/client.rs b/library/proc_macro/src/bridge/client.rs
index 83a2ac6f0d4..5ff7bbf6f96 100644
--- a/library/proc_macro/src/bridge/client.rs
+++ b/library/proc_macro/src/bridge/client.rs
@@ -310,16 +310,17 @@ impl Bridge<'_> {
         // NB. the server can't do this because it may use a different libstd.
         static HIDE_PANICS_DURING_EXPANSION: Once = Once::new();
         HIDE_PANICS_DURING_EXPANSION.call_once(|| {
-            let prev = panic::take_hook();
-            panic::set_hook(Box::new(move |info| {
-                let show = BridgeState::with(|state| match state {
-                    BridgeState::NotConnected => true,
-                    BridgeState::Connected(_) | BridgeState::InUse => force_show_panics,
-                });
-                if show {
-                    prev(info)
-                }
-            }));
+            panic::update_hook(|prev| {
+                Box::new(move |info| {
+                    let show = BridgeState::with(|state| match state {
+                        BridgeState::NotConnected => true,
+                        BridgeState::Connected(_) | BridgeState::InUse => force_show_panics,
+                    });
+                    if show {
+                        prev(info)
+                    }
+                })
+            });
         });
 
         BRIDGE_STATE.with(|state| state.set(BridgeState::Connected(self), f))
diff --git a/library/proc_macro/src/lib.rs b/library/proc_macro/src/lib.rs
index 69af598f91e..c5afca6d56a 100644
--- a/library/proc_macro/src/lib.rs
+++ b/library/proc_macro/src/lib.rs
@@ -30,6 +30,7 @@
 #![feature(restricted_std)]
 #![feature(rustc_attrs)]
 #![feature(min_specialization)]
+#![feature(panic_update_hook)]
 #![recursion_limit = "256"]
 
 #[unstable(feature = "proc_macro_internals", issue = "27812")]