@@ -3,7 +3,9 @@ use rustc_ast::tokenstream::{DelimSpacing, DelimSpan, Spacing, TokenStream, Toke
33use rustc_ast_pretty:: pprust:: token_to_string;
44use rustc_errors:: Diag ;
55
6- use super :: diagnostics:: { report_suspicious_mismatch_block, same_indentation_level} ;
6+ use super :: diagnostics:: {
7+ report_missing_open_delim, report_suspicious_mismatch_block, same_indentation_level,
8+ } ;
79use super :: { Lexer , UnmatchedDelim } ;
810
911impl < ' psess , ' src > Lexer < ' psess , ' src > {
@@ -77,12 +79,12 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
7779 ) ;
7880 }
7981
80- if let Some ( ( delim, _) ) = self . diag_info . open_delimiters . last ( ) {
82+ if let Some ( ( delim, _) ) = self . diag_info . open_delimiters . last ( ) . cloned ( ) {
8183 report_suspicious_mismatch_block (
8284 & mut err,
8385 & self . diag_info ,
8486 self . psess . source_map ( ) ,
85- * delim,
87+ delim,
8688 )
8789 }
8890 err
@@ -244,8 +246,14 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
244246 let msg = format ! ( "unexpected closing delimiter: `{token_str}`" ) ;
245247 let mut err = self . dcx ( ) . struct_span_err ( self . token . span , msg) ;
246248
247- report_suspicious_mismatch_block ( & mut err, & self . diag_info , self . psess . source_map ( ) , delim) ;
248249 err. span_label ( self . token . span , "unexpected closing delimiter" ) ;
250+
251+ if report_missing_open_delim ( & mut err, & mut self . diag_info . unmatched_delims ) {
252+ return err;
253+ }
254+
255+ report_suspicious_mismatch_block ( & mut err, & self . diag_info , self . psess . source_map ( ) , delim) ;
256+
249257 err
250258 }
251259}
0 commit comments