@@ -6,7 +6,6 @@ use crate::ty::query::TyCtxtAt;
66use crate :: ty:: tls;
77use crate :: ty:: { self , layout, Ty } ;
88
9- use backtrace:: Backtrace ;
109use rustc_data_structures:: sync:: Lock ;
1110use rustc_errors:: { struct_span_err, DiagnosticBuilder , ErrorReported } ;
1211use rustc_hir as hir;
@@ -15,7 +14,7 @@ use rustc_macros::HashStable;
1514use rustc_session:: CtfeBacktrace ;
1615use rustc_span:: { def_id:: DefId , Pos , Span } ;
1716use rustc_target:: abi:: { Align , Size } ;
18- use std:: { any:: Any , fmt, mem} ;
17+ use std:: { any:: Any , backtrace :: Backtrace , fmt, mem} ;
1918
2019#[ derive( Debug , Copy , Clone , PartialEq , Eq , HashStable , RustcEncodable , RustcDecodable ) ]
2120pub enum ErrorHandled {
@@ -219,16 +218,15 @@ impl fmt::Display for InterpErrorInfo<'_> {
219218}
220219
221220impl 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) ;
225224 }
226225 }
227226}
228227
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) ;
232230}
233231
234232impl From < ErrorHandled > for InterpErrorInfo < ' _ > {
@@ -255,11 +253,11 @@ impl<'tcx> From<InterpError<'tcx>> for InterpErrorInfo<'tcx> {
255253
256254 let backtrace = match capture_backtrace {
257255 CtfeBacktrace :: Disabled => None ,
258- CtfeBacktrace :: Capture => Some ( Box :: new ( Backtrace :: new_unresolved ( ) ) ) ,
256+ CtfeBacktrace :: Capture => Some ( Box :: new ( Backtrace :: force_capture ( ) ) ) ,
259257 CtfeBacktrace :: Immediate => {
260258 // 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) ;
263261 None
264262 }
265263 } ;
0 commit comments