@@ -63,6 +63,7 @@ use rustc_resolve as resolve;
63
63
use rustc_save_analysis as save;
64
64
use rustc_save_analysis:: DumpHandler ;
65
65
use rustc_data_structures:: sync:: Lrc ;
66
+ use rustc_data_structures:: OnDrop ;
66
67
use rustc:: session:: { self , config, Session , build_session, CompileResult } ;
67
68
use rustc:: session:: CompileIncomplete ;
68
69
use rustc:: session:: config:: { Input , PrintRequest , ErrorOutputType } ;
@@ -515,30 +516,35 @@ fn run_compiler_impl<'a>(args: &[String],
515
516
target_features:: add_configuration ( & mut cfg, & sess, & * trans) ;
516
517
sess. parse_sess . config = cfg;
517
518
518
- let plugins = sess. opts . debugging_opts . extra_plugins . clone ( ) ;
519
-
520
- let cstore = CStore :: new ( trans. metadata_loader ( ) ) ;
521
-
522
- do_or_return ! ( callbacks. late_callback( & * trans,
523
- & matches,
524
- & sess,
525
- & cstore,
526
- & input,
527
- & odir,
528
- & ofile) , Some ( sess) ) ;
529
-
530
- let control = callbacks. build_controller ( & sess, & matches) ;
531
-
532
- ( driver:: compile_input ( trans,
533
- & sess,
534
- & cstore,
535
- & input_file_path,
536
- & input,
537
- & odir,
538
- & ofile,
539
- Some ( plugins) ,
540
- & control) ,
541
- Some ( sess) )
519
+ let result = {
520
+ let plugins = sess. opts . debugging_opts . extra_plugins . clone ( ) ;
521
+
522
+ let cstore = CStore :: new ( trans. metadata_loader ( ) ) ;
523
+
524
+ do_or_return ! ( callbacks. late_callback( & * trans,
525
+ & matches,
526
+ & sess,
527
+ & cstore,
528
+ & input,
529
+ & odir,
530
+ & ofile) , Some ( sess) ) ;
531
+
532
+ let _sess_abort_error = OnDrop ( || sess. diagnostic ( ) . print_error_count ( ) ) ;
533
+
534
+ let control = callbacks. build_controller ( & sess, & matches) ;
535
+
536
+ driver:: compile_input ( trans,
537
+ & sess,
538
+ & cstore,
539
+ & input_file_path,
540
+ & input,
541
+ & odir,
542
+ & ofile,
543
+ Some ( plugins) ,
544
+ & control)
545
+ } ;
546
+
547
+ ( result, Some ( sess) )
542
548
}
543
549
544
550
// Extract output directory and file from matches.
0 commit comments