From f196e27d87cf2be019098c7562b4c2cf26566680 Mon Sep 17 00:00:00 2001 From: SparrowLii Date: Tue, 14 Mar 2023 20:31:58 +0800 Subject: [PATCH] fix `parallel!` --- compiler/rustc_data_structures/src/sync.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/compiler/rustc_data_structures/src/sync.rs b/compiler/rustc_data_structures/src/sync.rs index bffb98630c8..f30235572d0 100644 --- a/compiler/rustc_data_structures/src/sync.rs +++ b/compiler/rustc_data_structures/src/sync.rs @@ -402,6 +402,13 @@ cfg_if! { // We catch panics here ensuring that all the blocks execute. // This makes behavior consistent with the parallel compiler. let mut panic = None; + if let Err(p) = ::std::panic::catch_unwind( + ::std::panic::AssertUnwindSafe(|| $fblock) + ) { + if panic.is_none() { + panic = Some(p); + } + } $( if let Err(p) = ::std::panic::catch_unwind( ::std::panic::AssertUnwindSafe(|| $blocks)