@@ -77,8 +77,12 @@ pub struct Diagnostic {
7777
7878impl Clone for Diagnostic {
7979 fn clone ( & self ) -> Self {
80- #[ cfg( feature = "compiler_diagbacktraces" ) ]
81- return Diagnostic { level : self . level . clone ( ) , code : self . code , message : self . message . clone ( ) , primary_span : self . primary_span . clone ( ) , spans : self . spans . clone ( ) , note : self . note . clone ( ) , help : self . help . clone ( ) , backtrace : Diagnostic :: capture_backtrace ( ) } ;
80+ #[ cfg( feature = "compiler_diagbacktraces" ) ]
81+ unsafe { std:: env:: set_var ( "RUST_BACKTRACE" , "1" ) ; }
82+
83+ #[ cfg( feature = "compiler_diagbacktraces" ) ]
84+ return Diagnostic { level : self . level . clone ( ) , code : self . code , message : self . message . clone ( ) , primary_span : self . primary_span . clone ( ) , spans : self . spans . clone ( ) , note : self . note . clone ( ) , help : self . help . clone ( ) , backtrace : Backtrace :: capture ( ) } ;
85+
8286
8387 #[ cfg( not( feature = "compiler_diagbacktraces" ) ) ]
8488 return Diagnostic { level : self . level . clone ( ) , code : self . code , message : self . message . clone ( ) , primary_span : self . primary_span . clone ( ) , spans : self . spans . clone ( ) , note : self . note . clone ( ) , help : self . help . clone ( ) } ;
@@ -87,9 +91,13 @@ impl Clone for Diagnostic {
8791
8892impl Diagnostic {
8993 pub fn new ( level : Level , decl : ( usize , & str ) , primary_span : Span , spans : Vec < Span > , note : Vec < String > , help : Vec < String > ) -> Self {
90- #[ cfg( feature = "compiler_diagbacktraces" ) ]
94+ #[ cfg( feature = "compiler_diagbacktraces" ) ]
95+ unsafe { std:: env:: set_var ( "RUST_BACKTRACE" , "1" ) ; }
96+
97+ #[ cfg( feature = "compiler_diagbacktraces" ) ]
9198 let d = Diagnostic { level, code : decl. 0 , message : decl. 1 . to_string ( ) , primary_span, spans, note, help, backtrace : Backtrace :: capture ( ) } ;
9299
100+
93101 #[ cfg( not( feature = "compiler_diagbacktraces" ) ) ]
94102 let d = Diagnostic { level, code : decl. 0 , message : decl. 1 . to_string ( ) , primary_span, spans, note, help } ;
95103
@@ -99,8 +107,12 @@ impl Diagnostic {
99107 }
100108
101109 pub fn new_base ( level : Level , code : usize , message : String , primary_span : Span , spans : Vec < Span > , note : Vec < String > , help : Vec < String > ) -> Self {
102- #[ cfg( feature = "compiler_diagbacktraces" ) ]
110+ #[ cfg( feature = "compiler_diagbacktraces" ) ]
111+ unsafe { std:: env:: set_var ( "RUST_BACKTRACE" , "1" ) ; }
112+
113+ #[ cfg( feature = "compiler_diagbacktraces" ) ]
103114 let d = Diagnostic { level, code, message, primary_span, spans, note, help, backtrace : Backtrace :: capture ( ) } ;
115+
104116
105117 #[ cfg( not( feature = "compiler_diagbacktraces" ) ) ]
106118 let d = Diagnostic { level, code, message, primary_span, spans, note, help } ;
0 commit comments