1
Fork 0

Call the panic hook for non-unwind panics in proc-macros

This commit is contained in:
Ben Kimock 2024-04-11 17:27:49 -04:00
parent aa6a697a1c
commit d8dc28b93e
2 changed files with 6 additions and 1 deletions

View file

@ -283,7 +283,11 @@ fn maybe_install_panic_hook(force_show_panics: bool) {
HIDE_PANICS_DURING_EXPANSION.call_once(|| { HIDE_PANICS_DURING_EXPANSION.call_once(|| {
let prev = panic::take_hook(); let prev = panic::take_hook();
panic::set_hook(Box::new(move |info| { panic::set_hook(Box::new(move |info| {
if force_show_panics || !is_available() { // We normally report panics by catching unwinds and passing the payload from the
// unwind back to the compiler, but if the panic doesn't unwind we'll abort before
// the compiler has a chance to print an error. So we special-case PanicInfo where
// can_unwind is false.
if force_show_panics || !is_available() || !info.can_unwind() {
prev(info) prev(info)
} }
})); }));

View file

@ -30,6 +30,7 @@
#![feature(maybe_uninit_write_slice)] #![feature(maybe_uninit_write_slice)]
#![feature(negative_impls)] #![feature(negative_impls)]
#![feature(new_uninit)] #![feature(new_uninit)]
#![feature(panic_can_unwind)]
#![feature(restricted_std)] #![feature(restricted_std)]
#![feature(rustc_attrs)] #![feature(rustc_attrs)]
#![feature(min_specialization)] #![feature(min_specialization)]