File tree 1 file changed +14
-20
lines changed
compiler/rustc_parse/src/lexer
1 file changed +14
-20
lines changed Original file line number Diff line number Diff line change @@ -72,27 +72,21 @@ pub(crate) fn lex_token_trees<'psess, 'src>(
72
72
let ( _open_spacing, stream, res) = lexer. lex_token_trees ( /* is_delimited */ false ) ;
73
73
let unmatched_delims = lexer. diag_info . unmatched_delims ;
74
74
75
- match res {
76
- Ok ( ( ) ) if unmatched_delims. is_empty ( ) => Ok ( stream) ,
77
- _ => {
78
- // Return error if there are unmatched delimiters or unclosed delimiters.
79
- // We emit delimiter mismatch errors first, then emit the unclosing delimiter mismatch
80
- // because the delimiter mismatch is more likely to be the root cause of error
81
-
82
- let mut buffer = Vec :: with_capacity ( 1 ) ;
83
- for unmatched in unmatched_delims {
84
- if let Some ( err) = make_unclosed_delims_error ( unmatched, psess) {
85
- buffer. push ( err) ;
86
- }
87
- }
88
- if let Err ( errs) = res {
89
- // Add unclosing delimiter or diff marker errors
90
- for err in errs {
91
- buffer. push ( err) ;
92
- }
93
- }
94
- Err ( buffer)
75
+ if res. is_ok ( ) && unmatched_delims. is_empty ( ) {
76
+ Ok ( stream)
77
+ } else {
78
+ // Return error if there are unmatched delimiters or unclosed delimiters.
79
+ // We emit delimiter mismatch errors first, then emit the unclosing delimiter mismatch
80
+ // because the delimiter mismatch is more likely to be the root cause of error
81
+ let mut buffer: Vec < _ > = unmatched_delims
82
+ . into_iter ( )
83
+ . filter_map ( |unmatched_delim| make_unclosed_delims_error ( unmatched_delim, psess) )
84
+ . collect ( ) ;
85
+ if let Err ( errs) = res {
86
+ // Add unclosing delimiter or diff marker errors
87
+ buffer. extend ( errs) ;
95
88
}
89
+ Err ( buffer)
96
90
}
97
91
}
98
92
You can’t perform that action at this time.
0 commit comments