Skip to content

Commit d8dc28b

Browse files
committed
Call the panic hook for non-unwind panics in proc-macros
1 parent aa6a697 commit d8dc28b

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

library/proc_macro/src/bridge/client.rs

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

library/proc_macro/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#![feature(maybe_uninit_write_slice)]
3131
#![feature(negative_impls)]
3232
#![feature(new_uninit)]
33+
#![feature(panic_can_unwind)]
3334
#![feature(restricted_std)]
3435
#![feature(rustc_attrs)]
3536
#![feature(min_specialization)]

0 commit comments

Comments
 (0)