@@ -9,7 +9,7 @@ use std::time::{Duration, Instant};
9
9
10
10
use syntax:: ast;
11
11
use syntax:: errors:: emitter:: { ColorConfig , Emitter , EmitterWriter } ;
12
- use syntax:: errors:: { DiagnosticBuilder , Handler , HandlerFlags } ;
12
+ use syntax:: errors:: { DiagnosticBuilder , Handler } ;
13
13
use syntax:: parse:: { self , ParseSess } ;
14
14
use syntax:: source_map:: { FilePathMapping , SourceMap , Span , DUMMY_SP } ;
15
15
@@ -76,13 +76,13 @@ fn format_project<T: FormatHandler>(
76
76
}
77
77
78
78
// Parse the crate.
79
- let can_reset = Rc :: new ( RefCell :: new ( false ) ) ;
79
+ let can_reset_parser_errors = Rc :: new ( RefCell :: new ( false ) ) ;
80
80
let source_map = Rc :: new ( SourceMap :: new ( FilePathMapping :: empty ( ) ) ) ;
81
81
let mut parse_session = make_parse_sess (
82
82
source_map. clone ( ) ,
83
83
config,
84
- ignore_path_set . clone ( ) ,
85
- can_reset . clone ( ) ,
84
+ Rc :: clone ( & ignore_path_set ) ,
85
+ can_reset_parser_errors . clone ( ) ,
86
86
) ;
87
87
let mut report = FormatReport :: new ( ) ;
88
88
let directory_ownership = input. to_directory_ownership ( ) ;
@@ -92,7 +92,7 @@ fn format_project<T: FormatHandler>(
92
92
config,
93
93
& mut report,
94
94
directory_ownership,
95
- can_reset . clone ( ) ,
95
+ can_reset_parser_errors . clone ( ) ,
96
96
) {
97
97
Ok ( krate) => krate,
98
98
// Surface parse error via Session (errors are merged there from report)
@@ -628,7 +628,7 @@ fn parse_crate(
628
628
config : & Config ,
629
629
report : & mut FormatReport ,
630
630
directory_ownership : Option < parse:: DirectoryOwnership > ,
631
- parser_error_resetter : Rc < RefCell < bool > > ,
631
+ can_reset_parser_errors : Rc < RefCell < bool > > ,
632
632
) -> Result < ast:: Crate , ErrorKind > {
633
633
let input_is_stdin = input. is_text ( ) ;
634
634
@@ -681,7 +681,7 @@ fn parse_crate(
681
681
// occurred in files that are ignored, then reset
682
682
// the error count and continue.
683
683
// https://github.com/rust-lang/rustfmt/issues/3779
684
- if * parser_error_resetter . borrow ( ) {
684
+ if * can_reset_parser_errors . borrow ( ) {
685
685
parse_session. span_diagnostic . reset_err_count ( ) ;
686
686
return Ok ( c) ;
687
687
}
@@ -705,9 +705,8 @@ struct SilentOnIgnoredFilesEmitter {
705
705
ignore_path_set : Rc < IgnorePathSet > ,
706
706
source_map : Rc < SourceMap > ,
707
707
emitter : EmitterWriter ,
708
- can_reset : bool ,
709
708
has_non_ignorable_parser_errors : bool ,
710
- parser_error_resetter : Rc < RefCell < bool > > ,
709
+ can_reset : Rc < RefCell < bool > > ,
711
710
}
712
711
713
712
impl Emitter for SilentOnIgnoredFilesEmitter {
@@ -720,9 +719,8 @@ impl Emitter for SilentOnIgnoredFilesEmitter {
720
719
. ignore_path_set
721
720
. is_match ( & FileName :: Real ( path. to_path_buf ( ) ) )
722
721
{
723
- if !self . has_non_ignorable_parser_errors && !self . can_reset {
724
- self . can_reset = true ;
725
- * self . parser_error_resetter . borrow_mut ( ) = true ;
722
+ if !self . has_non_ignorable_parser_errors {
723
+ * self . can_reset . borrow_mut ( ) = true ;
726
724
}
727
725
return ;
728
726
}
@@ -732,10 +730,7 @@ impl Emitter for SilentOnIgnoredFilesEmitter {
732
730
}
733
731
734
732
self . has_non_ignorable_parser_errors = true ;
735
- if self . can_reset {
736
- * self . parser_error_resetter . borrow_mut ( ) = false ;
737
- }
738
- self . can_reset = false ;
733
+ * self . can_reset . borrow_mut ( ) = false ;
739
734
self . emitter . emit_diagnostic ( db) ;
740
735
}
741
736
}
@@ -755,7 +750,7 @@ fn make_parse_sess(
755
750
source_map : Rc < SourceMap > ,
756
751
config : & Config ,
757
752
ignore_path_set : Rc < IgnorePathSet > ,
758
- parser_error_resetter : Rc < RefCell < bool > > ,
753
+ can_reset : Rc < RefCell < bool > > ,
759
754
) -> ParseSess {
760
755
let tty_handler = if config. hide_parse_errors ( ) {
761
756
let silent_emitter = silent_emitter ( ) ;
@@ -772,20 +767,12 @@ fn make_parse_sess(
772
767
EmitterWriter :: stderr ( color_cfg, Some ( source_map. clone ( ) ) , false , false , None ) ;
773
768
let emitter = Box :: new ( SilentOnIgnoredFilesEmitter {
774
769
has_non_ignorable_parser_errors : false ,
775
- can_reset : false ,
776
770
ignore_path_set : ignore_path_set,
777
- source_map : source_map . clone ( ) ,
771
+ source_map : Rc :: clone ( & source_map ) ,
778
772
emitter : emitter_writer,
779
- parser_error_resetter ,
773
+ can_reset ,
780
774
} ) ;
781
- Handler :: with_emitter_and_flags (
782
- emitter,
783
- HandlerFlags {
784
- can_emit_warnings : false ,
785
- treat_err_as_bug : None ,
786
- ..Default :: default ( )
787
- } ,
788
- )
775
+ Handler :: with_emitter ( true , None , emitter)
789
776
} ;
790
777
791
778
ParseSess :: with_span_handler ( tty_handler, source_map)
0 commit comments