File tree 1 file changed +13
-3
lines changed
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;
16
16
use rustc_parse:: new_parser_from_source_str;
17
17
use rustc_span:: edition;
18
18
use rustc_span:: source_map:: { FileLoader , FileName , SourceMap } ;
19
+ use std:: mem;
19
20
use std:: path:: PathBuf ;
20
21
use std:: result;
21
22
use std:: sync:: { Arc , Mutex } ;
@@ -165,7 +166,7 @@ pub fn run_compiler_in_existing_thread_pool<R>(
165
166
registry. clone ( ) ,
166
167
) ;
167
168
168
- let compiler = Compiler {
169
+ let mut compiler = Compiler {
169
170
sess,
170
171
codegen_backend,
171
172
source_map,
@@ -179,11 +180,20 @@ pub fn run_compiler_in_existing_thread_pool<R>(
179
180
} ;
180
181
181
182
let r = {
182
- let _sess_abort_error = OnDrop ( || {
183
+ let sess_abort_error = OnDrop ( || {
183
184
compiler. sess . diagnostic ( ) . print_error_count ( registry) ;
184
185
} ) ;
185
186
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
187
197
} ;
188
198
189
199
let prof = compiler. sess . prof . clone ( ) ;
You can’t perform that action at this time.
0 commit comments