@@ -51,45 +51,6 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
5151 }
5252 }
5353
54- fn eof_err ( & mut self ) -> Diag < ' psess > {
55- let msg = "this file contains an unclosed delimiter" ;
56- let mut err = self . dcx ( ) . struct_span_err ( self . token . span , msg) ;
57-
58- let unclosed_delimiter_show_limit = 5 ;
59- let len = usize:: min ( unclosed_delimiter_show_limit, self . diag_info . open_delimiters . len ( ) ) ;
60- for & ( _, span) in & self . diag_info . open_delimiters [ ..len] {
61- err. span_label ( span, "unclosed delimiter" ) ;
62- self . diag_info . unmatched_delims . push ( UnmatchedDelim {
63- found_delim : None ,
64- found_span : self . token . span ,
65- unclosed_span : Some ( span) ,
66- candidate_span : None ,
67- } ) ;
68- }
69-
70- if let Some ( ( _, span) ) = self . diag_info . open_delimiters . get ( unclosed_delimiter_show_limit)
71- && self . diag_info . open_delimiters . len ( ) >= unclosed_delimiter_show_limit + 2
72- {
73- err. span_label (
74- * span,
75- format ! (
76- "another {} unclosed delimiters begin from here" ,
77- self . diag_info. open_delimiters. len( ) - unclosed_delimiter_show_limit
78- ) ,
79- ) ;
80- }
81-
82- if let Some ( ( delim, _) ) = self . diag_info . open_delimiters . last ( ) {
83- report_suspicious_mismatch_block (
84- & mut err,
85- & self . diag_info ,
86- self . psess . source_map ( ) ,
87- * delim,
88- )
89- }
90- err
91- }
92-
9354 fn lex_token_tree_open_delim (
9455 & mut self ,
9556 open_delim : Delimiter ,
@@ -206,13 +167,7 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
206167 } else if let Some ( glued) = self . token . glue ( & next_tok) {
207168 self . token = glued;
208169 } else {
209- let this_spacing = if next_tok. is_punct ( ) {
210- Spacing :: Joint
211- } else if next_tok == token:: Eof {
212- Spacing :: Alone
213- } else {
214- Spacing :: JointHidden
215- } ;
170+ let this_spacing = self . calculate_spacing ( & next_tok) ;
216171 break ( this_spacing, next_tok) ;
217172 }
218173 } ;
@@ -223,23 +178,64 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
223178 // Cut-down version of `bump` used when the token kind is known in advance.
224179 fn bump_minimal ( & mut self ) -> Spacing {
225180 let ( next_tok, is_next_tok_preceded_by_whitespace) = self . next_token_from_cursor ( ) ;
226-
227181 let this_spacing = if is_next_tok_preceded_by_whitespace {
228182 Spacing :: Alone
229183 } else {
230- if next_tok. is_punct ( ) {
231- Spacing :: Joint
232- } else if next_tok == token:: Eof {
233- Spacing :: Alone
234- } else {
235- Spacing :: JointHidden
236- }
184+ self . calculate_spacing ( & next_tok)
237185 } ;
238-
239186 self . token = next_tok;
240187 this_spacing
241188 }
242189
190+ fn calculate_spacing ( & self , next_tok : & Token ) -> Spacing {
191+ if next_tok. is_punct ( ) {
192+ Spacing :: Joint
193+ } else if * next_tok == token:: Eof {
194+ Spacing :: Alone
195+ } else {
196+ Spacing :: JointHidden
197+ }
198+ }
199+
200+ fn eof_err ( & mut self ) -> Diag < ' psess > {
201+ const UNCLOSED_DELIMITER_SHOW_LIMIT : usize = 5 ;
202+ let msg = "this file contains an unclosed delimiter" ;
203+ let mut err = self . dcx ( ) . struct_span_err ( self . token . span , msg) ;
204+
205+ let len = usize:: min ( UNCLOSED_DELIMITER_SHOW_LIMIT , self . diag_info . open_delimiters . len ( ) ) ;
206+ for & ( _, span) in & self . diag_info . open_delimiters [ ..len] {
207+ err. span_label ( span, "unclosed delimiter" ) ;
208+ self . diag_info . unmatched_delims . push ( UnmatchedDelim {
209+ found_delim : None ,
210+ found_span : self . token . span ,
211+ unclosed_span : Some ( span) ,
212+ candidate_span : None ,
213+ } ) ;
214+ }
215+
216+ if let Some ( ( _, span) ) = self . diag_info . open_delimiters . get ( UNCLOSED_DELIMITER_SHOW_LIMIT )
217+ && self . diag_info . open_delimiters . len ( ) >= UNCLOSED_DELIMITER_SHOW_LIMIT + 2
218+ {
219+ err. span_label (
220+ * span,
221+ format ! (
222+ "another {} unclosed delimiters begin from here" ,
223+ self . diag_info. open_delimiters. len( ) - UNCLOSED_DELIMITER_SHOW_LIMIT
224+ ) ,
225+ ) ;
226+ }
227+
228+ if let Some ( ( delim, _) ) = self . diag_info . open_delimiters . last ( ) {
229+ report_suspicious_mismatch_block (
230+ & mut err,
231+ & self . diag_info ,
232+ self . psess . source_map ( ) ,
233+ * delim,
234+ )
235+ }
236+ err
237+ }
238+
243239 fn close_delim_err ( & mut self , delim : Delimiter ) -> Diag < ' psess > {
244240 // An unexpected closing delimiter (i.e., there is no matching opening delimiter).
245241 let token_str = token_to_string ( & self . token ) ;
0 commit comments