@@ -6,7 +6,6 @@ use crate::ty::query::TyCtxtAt;
6
6
use crate :: ty:: tls;
7
7
use crate :: ty:: { self , layout, Ty } ;
8
8
9
- use backtrace:: Backtrace ;
10
9
use rustc_data_structures:: sync:: Lock ;
11
10
use rustc_errors:: { struct_span_err, DiagnosticBuilder , ErrorReported } ;
12
11
use rustc_hir as hir;
@@ -15,7 +14,7 @@ use rustc_macros::HashStable;
15
14
use rustc_session:: CtfeBacktrace ;
16
15
use rustc_span:: { def_id:: DefId , Pos , Span } ;
17
16
use rustc_target:: abi:: { Align , Size } ;
18
- use std:: { any:: Any , fmt, mem} ;
17
+ use std:: { any:: Any , backtrace :: Backtrace , fmt, mem} ;
19
18
20
19
#[ derive( Debug , Copy , Clone , PartialEq , Eq , HashStable , RustcEncodable , RustcDecodable ) ]
21
20
pub enum ErrorHandled {
@@ -219,16 +218,15 @@ impl fmt::Display for InterpErrorInfo<'_> {
219
218
}
220
219
221
220
impl InterpErrorInfo < ' _ > {
222
- pub fn print_backtrace ( & mut self ) {
223
- if let Some ( ref mut backtrace) = self . backtrace {
224
- print_backtrace ( & mut * backtrace) ;
221
+ pub fn print_backtrace ( & self ) {
222
+ if let Some ( backtrace) = self . backtrace . as_ref ( ) {
223
+ print_backtrace ( backtrace) ;
225
224
}
226
225
}
227
226
}
228
227
229
- fn print_backtrace ( backtrace : & mut Backtrace ) {
230
- backtrace. resolve ( ) ;
231
- eprintln ! ( "\n \n An error occurred in miri:\n {:?}" , backtrace) ;
228
+ fn print_backtrace ( backtrace : & Backtrace ) {
229
+ eprintln ! ( "\n \n An error occurred in miri:\n {}" , backtrace) ;
232
230
}
233
231
234
232
impl From < ErrorHandled > for InterpErrorInfo < ' _ > {
@@ -255,11 +253,11 @@ impl<'tcx> From<InterpError<'tcx>> for InterpErrorInfo<'tcx> {
255
253
256
254
let backtrace = match capture_backtrace {
257
255
CtfeBacktrace :: Disabled => None ,
258
- CtfeBacktrace :: Capture => Some ( Box :: new ( Backtrace :: new_unresolved ( ) ) ) ,
256
+ CtfeBacktrace :: Capture => Some ( Box :: new ( Backtrace :: force_capture ( ) ) ) ,
259
257
CtfeBacktrace :: Immediate => {
260
258
// Print it now.
261
- let mut backtrace = Backtrace :: new_unresolved ( ) ;
262
- print_backtrace ( & mut backtrace) ;
259
+ let backtrace = Backtrace :: force_capture ( ) ;
260
+ print_backtrace ( & backtrace) ;
263
261
None
264
262
}
265
263
} ;
0 commit comments