Skip to content

Commit 45b97f2

Browse files
committed
miri: use backtrace crate printing instead of rolling our own
1 parent 3a31213 commit 45b97f2

File tree

1 file changed

+4
-40
lines changed

1 file changed

+4
-40
lines changed

src/librustc/mir/interpret/error.rs

Lines changed: 4 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -183,50 +183,14 @@ pub struct EvalError<'tcx> {
183183
impl<'tcx> EvalError<'tcx> {
184184
pub fn print_backtrace(&mut self) {
185185
if let Some(ref mut backtrace) = self.backtrace {
186-
eprintln!("{}", print_backtrace(&mut *backtrace));
186+
print_backtrace(&mut *backtrace);
187187
}
188188
}
189189
}
190190

191-
fn print_backtrace(backtrace: &mut Backtrace) -> String {
192-
use std::fmt::Write;
193-
191+
fn print_backtrace(backtrace: &mut Backtrace) {
194192
backtrace.resolve();
195-
196-
let mut trace_text = "\n\nAn error occurred in miri:\n".to_string();
197-
write!(trace_text, "backtrace frames: {}\n", backtrace.frames().len()).unwrap();
198-
'frames: for (i, frame) in backtrace.frames().iter().enumerate() {
199-
if frame.symbols().is_empty() {
200-
write!(trace_text, " {}: no symbols\n", i).unwrap();
201-
}
202-
let mut first = true;
203-
for symbol in frame.symbols() {
204-
if first {
205-
write!(trace_text, " {}: ", i).unwrap();
206-
first = false;
207-
} else {
208-
let len = i.to_string().len();
209-
write!(trace_text, " {} ", " ".repeat(len)).unwrap();
210-
}
211-
if let Some(name) = symbol.name() {
212-
write!(trace_text, "{}\n", name).unwrap();
213-
} else {
214-
write!(trace_text, "<unknown>\n").unwrap();
215-
}
216-
write!(trace_text, " at ").unwrap();
217-
if let Some(file_path) = symbol.filename() {
218-
write!(trace_text, "{}", file_path.display()).unwrap();
219-
} else {
220-
write!(trace_text, "<unknown_file>").unwrap();
221-
}
222-
if let Some(line) = symbol.lineno() {
223-
write!(trace_text, ":{}\n", line).unwrap();
224-
} else {
225-
write!(trace_text, "\n").unwrap();
226-
}
227-
}
228-
}
229-
trace_text
193+
eprintln!("\n\nAn error occurred in miri:\n{:?}", backtrace);
230194
}
231195

232196
impl<'tcx> From<EvalErrorKind<'tcx, u64>> for EvalError<'tcx> {
@@ -238,7 +202,7 @@ impl<'tcx> From<EvalErrorKind<'tcx, u64>> for EvalError<'tcx> {
238202

239203
if val == "immediate" {
240204
// Print it now
241-
eprintln!("{}", print_backtrace(&mut backtrace));
205+
print_backtrace(&mut backtrace);
242206
None
243207
} else {
244208
Some(Box::new(backtrace))

0 commit comments

Comments
 (0)