fix diagnostic message
This commit is contained in:
parent
f964b46451
commit
f6c2bc5c24
@ -1,5 +1,3 @@
|
||||
use std::fmt;
|
||||
|
||||
use rustc_errors::{
|
||||
DiagnosticArgValue, DiagnosticBuilder, DiagnosticMessage, EmissionGuarantee, Handler,
|
||||
IntoDiagnostic,
|
||||
@ -427,24 +425,6 @@ pub struct UndefinedBehavior {
|
||||
pub raw_bytes: RawBytesNote,
|
||||
}
|
||||
|
||||
pub struct DebugExt<T>(T);
|
||||
|
||||
impl<T: ReportErrorExt> fmt::Debug for DebugExt<T> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let s = ty::tls::with(|tcx| {
|
||||
let mut builder = tcx.sess.struct_allow("");
|
||||
let handler = &tcx.sess.parse_sess.span_diagnostic;
|
||||
let message = self.0.diagnostic_message();
|
||||
self.0.add_args(handler, &mut builder);
|
||||
let s = handler.eagerly_translate_to_string(message, builder.args());
|
||||
builder.cancel();
|
||||
s
|
||||
});
|
||||
|
||||
f.write_str(&s)
|
||||
}
|
||||
}
|
||||
|
||||
pub trait ReportErrorExt {
|
||||
/// Returns the diagnostic message for this error.
|
||||
fn diagnostic_message(&self) -> DiagnosticMessage;
|
||||
@ -454,11 +434,19 @@ fn add_args<G: EmissionGuarantee>(
|
||||
builder: &mut DiagnosticBuilder<'_, G>,
|
||||
);
|
||||
|
||||
fn debug(self) -> DebugExt<Self>
|
||||
fn debug(self) -> String
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
DebugExt(self)
|
||||
ty::tls::with(move |tcx| {
|
||||
let mut builder = tcx.sess.struct_allow(DiagnosticMessage::Str(String::new().into()));
|
||||
let handler = &tcx.sess.parse_sess.span_diagnostic;
|
||||
let message = self.diagnostic_message();
|
||||
self.add_args(handler, &mut builder);
|
||||
let s = handler.eagerly_translate_to_string(message, builder.args());
|
||||
builder.cancel();
|
||||
s
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -481,7 +469,7 @@ fn diagnostic_message(&self) -> DiagnosticMessage {
|
||||
use crate::fluent_generated::*;
|
||||
use UndefinedBehaviorInfo::*;
|
||||
match self {
|
||||
Ub(msg) => (&**msg).into(),
|
||||
Ub(msg) => msg.clone().into(),
|
||||
Unreachable => const_eval_unreachable,
|
||||
BoundsCheckFailed { .. } => const_eval_bounds_check_failed,
|
||||
DivisionByZero => const_eval_division_by_zero,
|
||||
|
@ -4,6 +4,7 @@
|
||||
use either::Right;
|
||||
|
||||
use rustc_const_eval::const_eval::CheckAlignment;
|
||||
use rustc_const_eval::ReportErrorExt;
|
||||
use rustc_data_structures::fx::FxHashSet;
|
||||
use rustc_hir::def::DefKind;
|
||||
use rustc_index::bit_set::BitSet;
|
||||
@ -378,7 +379,7 @@ fn get_const(&self, place: Place<'tcx>) -> Option<OpTy<'tcx>> {
|
||||
op
|
||||
}
|
||||
Err(e) => {
|
||||
trace!("get_const failed: {:?}", e.debug());
|
||||
trace!("get_const failed: {:?}", e.into_kind().debug());
|
||||
return None;
|
||||
}
|
||||
};
|
||||
|
@ -9,6 +9,7 @@
|
||||
use rustc_const_eval::interpret::{
|
||||
self, InterpCx, InterpResult, LocalValue, MemoryKind, OpTy, Scalar, StackPopCleanup,
|
||||
};
|
||||
use rustc_const_eval::ReportErrorExt;
|
||||
use rustc_hir::def::DefKind;
|
||||
use rustc_hir::HirId;
|
||||
use rustc_index::bit_set::BitSet;
|
||||
@ -232,7 +233,7 @@ fn get_const(&self, place: Place<'tcx>) -> Option<OpTy<'tcx>> {
|
||||
op
|
||||
}
|
||||
Err(e) => {
|
||||
trace!("get_const failed: {:?}", e.debug());
|
||||
trace!("get_const failed: {:?}", e.into_kind().debug());
|
||||
return None;
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user