@@ -183,50 +183,14 @@ pub struct EvalError<'tcx> {
183
183
impl < ' tcx > EvalError < ' tcx > {
184
184
pub fn print_backtrace ( & mut self ) {
185
185
if let Some ( ref mut backtrace) = self . backtrace {
186
- eprintln ! ( "{}" , print_backtrace( & mut * backtrace) ) ;
186
+ print_backtrace ( & mut * backtrace) ;
187
187
}
188
188
}
189
189
}
190
190
191
- fn print_backtrace ( backtrace : & mut Backtrace ) -> String {
192
- use std:: fmt:: Write ;
193
-
191
+ fn print_backtrace ( backtrace : & mut Backtrace ) {
194
192
backtrace. resolve ( ) ;
195
-
196
- let mut trace_text = "\n \n An 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 \n An error occurred in miri:\n {:?}" , backtrace) ;
230
194
}
231
195
232
196
impl < ' tcx > From < EvalErrorKind < ' tcx , u64 > > for EvalError < ' tcx > {
@@ -238,7 +202,7 @@ impl<'tcx> From<EvalErrorKind<'tcx, u64>> for EvalError<'tcx> {
238
202
239
203
if val == "immediate" {
240
204
// Print it now
241
- eprintln ! ( "{}" , print_backtrace( & mut backtrace) ) ;
205
+ print_backtrace ( & mut backtrace) ;
242
206
None
243
207
} else {
244
208
Some ( Box :: new ( backtrace) )
0 commit comments