Throw core::panic!("message") as &str instead of String.
This makes it consistent with std::panic!("message"), which also throws a &str, not a String.
This commit is contained in:
parent
ad268bd638
commit
2780e35246
2 changed files with 18 additions and 1 deletions
|
@ -259,6 +259,7 @@
|
||||||
#![feature(exhaustive_patterns)]
|
#![feature(exhaustive_patterns)]
|
||||||
#![feature(extend_one)]
|
#![feature(extend_one)]
|
||||||
#![feature(external_doc)]
|
#![feature(external_doc)]
|
||||||
|
#![feature(fmt_as_str)]
|
||||||
#![feature(fn_traits)]
|
#![feature(fn_traits)]
|
||||||
#![feature(format_args_nl)]
|
#![feature(format_args_nl)]
|
||||||
#![feature(gen_future)]
|
#![feature(gen_future)]
|
||||||
|
|
|
@ -478,10 +478,26 @@ pub fn begin_panic_handler(info: &PanicInfo<'_>) -> ! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct StrPanicPayload(&'static str);
|
||||||
|
|
||||||
|
unsafe impl BoxMeUp for StrPanicPayload {
|
||||||
|
fn take_box(&mut self) -> *mut (dyn Any + Send) {
|
||||||
|
Box::into_raw(Box::new(self.0))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get(&mut self) -> &(dyn Any + Send) {
|
||||||
|
&self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let loc = info.location().unwrap(); // The current implementation always returns Some
|
let loc = info.location().unwrap(); // The current implementation always returns Some
|
||||||
let msg = info.message().unwrap(); // The current implementation always returns Some
|
let msg = info.message().unwrap(); // The current implementation always returns Some
|
||||||
crate::sys_common::backtrace::__rust_end_short_backtrace(move || {
|
crate::sys_common::backtrace::__rust_end_short_backtrace(move || {
|
||||||
|
if let Some(msg) = msg.as_str() {
|
||||||
|
rust_panic_with_hook(&mut StrPanicPayload(msg), info.message(), loc);
|
||||||
|
} else {
|
||||||
rust_panic_with_hook(&mut PanicPayload::new(msg), info.message(), loc);
|
rust_panic_with_hook(&mut PanicPayload::new(msg), info.message(), loc);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue