@@ -7,7 +7,7 @@ use std::rc::Rc;
7
7
use std:: time:: { Duration , Instant } ;
8
8
9
9
use syntax:: ast;
10
- use syntax:: errors:: emitter:: { ColorConfig , EmitterWriter } ;
10
+ use syntax:: errors:: emitter:: { ColorConfig , Emitter } ;
11
11
use syntax:: errors:: { DiagnosticBuilder , Handler } ;
12
12
use syntax:: parse:: { self , ParseSess } ;
13
13
use syntax:: source_map:: { FilePathMapping , SourceMap , Span , DUMMY_SP } ;
@@ -89,7 +89,7 @@ fn format_project<T: FormatHandler>(
89
89
timer = timer. done_parsing ( ) ;
90
90
91
91
// Suppress error output if we have to do any further parsing.
92
- let silent_emitter = silent_emitter ( source_map ) ;
92
+ let silent_emitter = silent_emitter ( ) ;
93
93
parse_session. span_diagnostic = Handler :: with_emitter ( true , None , silent_emitter) ;
94
94
95
95
let mut context = FormatContext :: new ( & krate, report, parse_session, config, handler) ;
@@ -670,18 +670,20 @@ fn parse_crate(
670
670
Err ( ErrorKind :: ParseError )
671
671
}
672
672
673
- fn silent_emitter ( source_map : Rc < SourceMap > ) -> Box < EmitterWriter > {
674
- Box :: new ( EmitterWriter :: new (
675
- Box :: new ( Vec :: new ( ) ) ,
676
- Some ( source_map) ,
677
- false ,
678
- false ,
679
- ) )
673
+ /// Emitter which discards every error.
674
+ struct SilentEmitter ;
675
+
676
+ impl Emitter for SilentEmitter {
677
+ fn emit ( & mut self , _db : & DiagnosticBuilder < ' _ > ) { }
678
+ }
679
+
680
+ fn silent_emitter ( ) -> Box < SilentEmitter > {
681
+ Box :: new ( SilentEmitter { } )
680
682
}
681
683
682
684
fn make_parse_sess ( source_map : Rc < SourceMap > , config : & Config ) -> ParseSess {
683
685
let tty_handler = if config. hide_parse_errors ( ) {
684
- let silent_emitter = silent_emitter ( source_map . clone ( ) ) ;
686
+ let silent_emitter = silent_emitter ( ) ;
685
687
Handler :: with_emitter ( true , None , silent_emitter)
686
688
} else {
687
689
let supports_color = term:: stderr ( ) . map_or ( false , |term| term. supports_color ( ) ) ;
0 commit comments