File tree Expand file tree Collapse file tree 2 files changed +6
-1
lines changed Expand file tree Collapse file tree 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) {
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 } ) ) ;
Original file line number Diff line number Diff line change 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) ]
You can’t perform that action at this time.
0 commit comments