From f4780504cdd5451cccd3c37493cb4c6263de5db2 Mon Sep 17 00:00:00 2001 From: cyrgani Date: Mon, 13 Apr 2026 19:29:55 +0000 Subject: [PATCH] add and use `PanicMessage::into_string` --- compiler/rustc_expand/src/proc_macro.rs | 16 +++++++--------- library/proc_macro/src/bridge/rpc.rs | 8 ++++++++ .../proc-macro-srv/src/dylib/proc_macros.rs | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/compiler/rustc_expand/src/proc_macro.rs b/compiler/rustc_expand/src/proc_macro.rs index d05a2a0d2d42..8ad502aa3f70 100644 --- a/compiler/rustc_expand/src/proc_macro.rs +++ b/compiler/rustc_expand/src/proc_macro.rs @@ -49,9 +49,7 @@ fn expand( self.client.run(&strategy, server, input, proc_macro_backtrace).map_err(|e| { ecx.dcx().emit_err(errors::ProcMacroPanicked { span, - message: e - .as_str() - .map(|message| errors::ProcMacroPanickedHelp { message: message.into() }), + message: e.into_string().map(|message| errors::ProcMacroPanickedHelp { message }), }) }) } @@ -78,9 +76,9 @@ fn expand( |e| { ecx.dcx().emit_err(errors::CustomAttributePanicked { span, - message: e.as_str().map(|message| errors::CustomAttributePanickedHelp { - message: message.into(), - }), + message: e + .into_string() + .map(|message| errors::CustomAttributePanickedHelp { message }), }) }, ) @@ -206,9 +204,9 @@ fn expand_derive_macro( ecx.dcx().emit_err({ errors::ProcMacroDerivePanicked { span, - message: e.as_str().map(|message| errors::ProcMacroDerivePanickedHelp { - message: message.into(), - }), + message: e + .into_string() + .map(|message| errors::ProcMacroDerivePanickedHelp { message }), } }); Err(()) diff --git a/library/proc_macro/src/bridge/rpc.rs b/library/proc_macro/src/bridge/rpc.rs index 7fee8654bc78..2ada18205673 100644 --- a/library/proc_macro/src/bridge/rpc.rs +++ b/library/proc_macro/src/bridge/rpc.rs @@ -244,6 +244,14 @@ pub fn as_str(&self) -> Option<&str> { PanicMessage::Unknown => None, } } + + pub fn into_string(self) -> Option { + match self { + PanicMessage::StaticStr(s) => Some(s.into()), + PanicMessage::String(s) => Some(s), + PanicMessage::Unknown => None, + } + } } impl Encode for PanicMessage { diff --git a/src/tools/rust-analyzer/crates/proc-macro-srv/src/dylib/proc_macros.rs b/src/tools/rust-analyzer/crates/proc-macro-srv/src/dylib/proc_macros.rs index 4065dbd0b49b..cf00be0327cf 100644 --- a/src/tools/rust-analyzer/crates/proc-macro-srv/src/dylib/proc_macros.rs +++ b/src/tools/rust-analyzer/crates/proc-macro-srv/src/dylib/proc_macros.rs @@ -7,7 +7,7 @@ impl From for crate::PanicMessage { fn from(p: bridge::PanicMessage) -> Self { - Self { message: p.as_str().map(|s| s.to_owned()) } + Self { message: p.into_string() } } }