@@ -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 } ;
@@ -90,7 +90,7 @@ fn format_project<T: FormatHandler>(
90
90
timer = timer. done_parsing ( ) ;
91
91
92
92
// Suppress error output if we have to do any further parsing.
93
- let silent_emitter = silent_emitter ( source_map ) ;
93
+ let silent_emitter = silent_emitter ( ) ;
94
94
parse_session. span_diagnostic = Handler :: with_emitter ( true , None , silent_emitter) ;
95
95
96
96
let mut context = FormatContext :: new ( & krate, report, parse_session, config, handler) ;
@@ -672,18 +672,20 @@ fn parse_crate(
672
672
Err ( ErrorKind :: ParseError )
673
673
}
674
674
675
- fn silent_emitter ( source_map : Rc < SourceMap > ) -> Box < EmitterWriter > {
676
- Box :: new ( EmitterWriter :: new (
677
- Box :: new ( Vec :: new ( ) ) ,
678
- Some ( source_map) ,
679
- false ,
680
- false ,
681
- ) )
675
+ /// Emitter which discards every error.
676
+ struct SilentEmitter ;
677
+
678
+ impl Emitter for SilentEmitter {
679
+ fn emit ( & mut self , _db : & DiagnosticBuilder < ' _ > ) { }
680
+ }
681
+
682
+ fn silent_emitter ( ) -> Box < SilentEmitter > {
683
+ Box :: new ( SilentEmitter { } )
682
684
}
683
685
684
686
fn make_parse_sess ( source_map : Rc < SourceMap > , config : & Config ) -> ParseSess {
685
687
let tty_handler = if config. hide_parse_errors ( ) {
686
- let silent_emitter = silent_emitter ( source_map . clone ( ) ) ;
688
+ let silent_emitter = silent_emitter ( ) ;
687
689
Handler :: with_emitter ( true , None , silent_emitter)
688
690
} else {
689
691
let supports_color = term:: stderr ( ) . map_or ( false , |term| term. supports_color ( ) ) ;
0 commit comments