File tree 2 files changed +6
-1
lines changed
2 files changed +6
-1
lines changed Original file line number Diff line number Diff line change @@ -283,7 +283,11 @@ fn maybe_install_panic_hook(force_show_panics: bool) {
283
283
HIDE_PANICS_DURING_EXPANSION . call_once ( || {
284
284
let prev = panic:: take_hook ( ) ;
285
285
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 ( ) {
287
291
prev ( info)
288
292
}
289
293
} ) ) ;
Original file line number Diff line number Diff line change 30
30
#![ feature( maybe_uninit_write_slice) ]
31
31
#![ feature( negative_impls) ]
32
32
#![ feature( new_uninit) ]
33
+ #![ feature( panic_can_unwind) ]
33
34
#![ feature( restricted_std) ]
34
35
#![ feature( rustc_attrs) ]
35
36
#![ feature( min_specialization) ]
You can’t perform that action at this time.
0 commit comments