@@ -276,67 +276,65 @@ pub struct Config {
276
276
pub registry : Registry ,
277
277
}
278
278
279
- fn create_compiler_and_run < R > ( config : Config , f : impl FnOnce ( & Compiler ) -> R ) -> R {
280
- crate :: callbacks:: setup_callbacks ( ) ;
281
-
282
- let registry = & config. registry ;
283
- let ( mut sess, codegen_backend) = util:: create_session (
284
- config. opts ,
285
- config. crate_cfg ,
286
- config. crate_check_cfg ,
287
- config. diagnostic_output ,
288
- config. file_loader ,
289
- config. input_path . clone ( ) ,
290
- config. lint_caps ,
291
- config. make_codegen_backend ,
292
- registry. clone ( ) ,
293
- ) ;
294
-
295
- if let Some ( parse_sess_created) = config. parse_sess_created {
296
- parse_sess_created (
297
- & mut Lrc :: get_mut ( & mut sess)
298
- . expect ( "create_session() should never share the returned session" )
299
- . parse_sess ,
300
- ) ;
301
- }
302
-
303
- let temps_dir = sess. opts . unstable_opts . temps_dir . as_ref ( ) . map ( |o| PathBuf :: from ( & o) ) ;
304
-
305
- let compiler = Compiler {
306
- sess,
307
- codegen_backend,
308
- input : config. input ,
309
- input_path : config. input_path ,
310
- output_dir : config. output_dir ,
311
- output_file : config. output_file ,
312
- temps_dir,
313
- register_lints : config. register_lints ,
314
- override_queries : config. override_queries ,
315
- } ;
316
-
317
- rustc_span:: with_source_map ( compiler. sess . parse_sess . clone_source_map ( ) , move || {
318
- let r = {
319
- let _sess_abort_error = OnDrop ( || {
320
- compiler. sess . finish_diagnostics ( registry) ;
321
- } ) ;
322
-
323
- f ( & compiler)
324
- } ;
325
-
326
- let prof = compiler. sess . prof . clone ( ) ;
327
- prof. generic_activity ( "drop_compiler" ) . run ( move || drop ( compiler) ) ;
328
- r
329
- } )
330
- }
331
-
332
279
// JUSTIFICATION: before session exists, only config
333
280
#[ allow( rustc:: bad_opt_access) ]
334
281
pub fn run_compiler < R : Send > ( config : Config , f : impl FnOnce ( & Compiler ) -> R + Send ) -> R {
335
282
trace ! ( "run_compiler" ) ;
336
283
util:: run_in_thread_pool_with_globals (
337
284
config. opts . edition ,
338
285
config. opts . unstable_opts . threads ,
339
- || create_compiler_and_run ( config, f) ,
286
+ || {
287
+ crate :: callbacks:: setup_callbacks ( ) ;
288
+
289
+ let registry = & config. registry ;
290
+ let ( mut sess, codegen_backend) = util:: create_session (
291
+ config. opts ,
292
+ config. crate_cfg ,
293
+ config. crate_check_cfg ,
294
+ config. diagnostic_output ,
295
+ config. file_loader ,
296
+ config. input_path . clone ( ) ,
297
+ config. lint_caps ,
298
+ config. make_codegen_backend ,
299
+ registry. clone ( ) ,
300
+ ) ;
301
+
302
+ if let Some ( parse_sess_created) = config. parse_sess_created {
303
+ parse_sess_created (
304
+ & mut Lrc :: get_mut ( & mut sess)
305
+ . expect ( "create_session() should never share the returned session" )
306
+ . parse_sess ,
307
+ ) ;
308
+ }
309
+
310
+ let temps_dir = sess. opts . unstable_opts . temps_dir . as_ref ( ) . map ( |o| PathBuf :: from ( & o) ) ;
311
+
312
+ let compiler = Compiler {
313
+ sess,
314
+ codegen_backend,
315
+ input : config. input ,
316
+ input_path : config. input_path ,
317
+ output_dir : config. output_dir ,
318
+ output_file : config. output_file ,
319
+ temps_dir,
320
+ register_lints : config. register_lints ,
321
+ override_queries : config. override_queries ,
322
+ } ;
323
+
324
+ rustc_span:: with_source_map ( compiler. sess . parse_sess . clone_source_map ( ) , move || {
325
+ let r = {
326
+ let _sess_abort_error = OnDrop ( || {
327
+ compiler. sess . finish_diagnostics ( registry) ;
328
+ } ) ;
329
+
330
+ f ( & compiler)
331
+ } ;
332
+
333
+ let prof = compiler. sess . prof . clone ( ) ;
334
+ prof. generic_activity ( "drop_compiler" ) . run ( move || drop ( compiler) ) ;
335
+ r
336
+ } )
337
+ } ,
340
338
)
341
339
}
342
340
0 commit comments