@@ -35,7 +35,7 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
35
35
return if is_delimited {
36
36
Ok ( ( open_spacing, TokenStream :: new ( buf) ) )
37
37
} else {
38
- Err ( vec ! [ self . close_delim_err( delim) ] )
38
+ Err ( self . close_delim_err ( delim) )
39
39
} ;
40
40
}
41
41
token:: Eof => {
@@ -157,15 +157,15 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
157
157
candidate = Some ( * brace_span) ;
158
158
}
159
159
}
160
- let ( _, _) = self . diag_info . open_braces . pop ( ) . unwrap ( ) ;
160
+ // let (_, _) = self.diag_info.open_braces.pop().unwrap();
161
161
self . diag_info . unmatched_delims . push ( UnmatchedDelim {
162
162
found_delim : Some ( close_delim) ,
163
163
found_span : self . token . span ,
164
164
unclosed_span : unclosed_delimiter,
165
165
candidate_span : candidate,
166
166
} ) ;
167
167
} else {
168
- self . diag_info . open_braces . pop ( ) ;
168
+ // self.diag_info.open_braces.pop();
169
169
}
170
170
171
171
// If the incorrect delimiter matches an earlier opening
@@ -242,14 +242,21 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
242
242
this_spacing
243
243
}
244
244
245
- fn close_delim_err ( & mut self , delim : Delimiter ) -> Diag < ' psess > {
245
+ fn close_delim_err ( & mut self , delim : Delimiter ) -> Vec < Diag < ' psess > > {
246
246
// An unexpected closing delimiter (i.e., there is no matching opening delimiter).
247
+ //println!("open_braces: {:?}", self.diag_info.open_braces);
248
+ if let Some ( ( last_open_braces, _) ) = self . diag_info . open_braces . last ( )
249
+ && * last_open_braces == delim
250
+ {
251
+ self . diag_info . open_braces . pop ( ) ;
252
+ return vec ! [ ] ;
253
+ }
247
254
let token_str = token_to_string ( & self . token ) ;
248
255
let msg = format ! ( "unexpected closing delimiter: `{token_str}`" ) ;
249
256
let mut err = self . dcx ( ) . struct_span_err ( self . token . span , msg) ;
250
257
251
258
report_suspicious_mismatch_block ( & mut err, & self . diag_info , self . psess . source_map ( ) , delim) ;
252
259
err. span_label ( self . token . span , "unexpected closing delimiter" ) ;
253
- err
260
+ vec ! [ err]
254
261
}
255
262
}
0 commit comments