File tree Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ use rustc_lint::LintStore;
1616use rustc_parse:: new_parser_from_source_str;
1717use rustc_span:: edition;
1818use rustc_span:: source_map:: { FileLoader , FileName , SourceMap } ;
19+ use std:: mem;
1920use std:: path:: PathBuf ;
2021use std:: result;
2122use std:: sync:: { Arc , Mutex } ;
@@ -165,7 +166,7 @@ pub fn run_compiler_in_existing_thread_pool<R>(
165166 registry. clone ( ) ,
166167 ) ;
167168
168- let compiler = Compiler {
169+ let mut compiler = Compiler {
169170 sess,
170171 codegen_backend,
171172 source_map,
@@ -179,11 +180,20 @@ pub fn run_compiler_in_existing_thread_pool<R>(
179180 } ;
180181
181182 let r = {
182- let _sess_abort_error = OnDrop ( || {
183+ let sess_abort_error = OnDrop ( || {
183184 compiler. sess . diagnostic ( ) . print_error_count ( registry) ;
184185 } ) ;
185186
186- f ( & compiler)
187+ let r = f ( & compiler) ;
188+
189+ mem:: forget ( sess_abort_error) ;
190+
191+ // Ensure there are no more references to Session so no more errors can be generated.
192+ Lrc :: get_mut ( & mut compiler. sess ) . expect ( "no references to Session" ) ;
193+
194+ compiler. sess . diagnostic ( ) . print_error_count ( registry) ;
195+
196+ r
187197 } ;
188198
189199 let prof = compiler. sess . prof . clone ( ) ;
You can’t perform that action at this time.
0 commit comments