diff --git a/crates/proc-macro-srv-cli/src/main_loop.rs b/crates/proc-macro-srv-cli/src/main_loop.rs index c19847b4b5..1e956f91e6 100644 --- a/crates/proc-macro-srv-cli/src/main_loop.rs +++ b/crates/proc-macro-srv-cli/src/main_loop.rs @@ -3,7 +3,7 @@ use proc_macro_api::{ ProtocolFormat, bidirectional_protocol::msg as bidirectional, legacy_protocol::msg as legacy, version::CURRENT_API_VERSION, }; -use std::panic::panic_any; +use std::panic::{panic_any, resume_unwind}; use std::{ io::{self, BufRead, Write}, ops::Range, @@ -199,7 +199,7 @@ impl<'a> ProcMacroClientHandle<'a> { fn handle_failure(failure: Result) -> ! { match failure { Err(ProcMacroClientError::Cancelled { reason }) => { - panic_any(ProcMacroPanicMarker::Cancelled { reason }); + resume_unwind(Box::new(ProcMacroPanicMarker::Cancelled { reason })); } Err(err) => { panic_any(ProcMacroPanicMarker::Internal {