@@ -73,38 +73,34 @@ pub(crate) fn make_unclosed_delims_error(
7373 if let Some ( sp) = unmatched. unclosed_span {
7474 spans. push ( sp) ;
7575 } ;
76- let mut err = psess. dcx ( ) . create_err ( MismatchedClosingDelimiter {
76+ let missing_open_note = report_missing_open_delim ( & unmatched)
77+ . map ( |s| format ! ( ", may missing open `{s}`" ) )
78+ . unwrap_or_default ( ) ;
79+ let err = psess. dcx ( ) . create_err ( MismatchedClosingDelimiter {
7780 spans,
7881 delimiter : pprust:: token_kind_to_string ( & token:: CloseDelim ( found_delim) ) . to_string ( ) ,
7982 unmatched : unmatched. found_span ,
83+ missing_open_note,
8084 opening_candidate : unmatched. candidate_span ,
8185 unclosed : unmatched. unclosed_span ,
8286 } ) ;
83- report_missing_open_delim ( & mut err, & [ unmatched] ) ;
8487 Some ( err)
8588}
8689
8790// When we get a `)` or `]` for `{`, we should emit help message here
8891// it's more friendly compared to report `unmatched error` in later phase
89- fn report_missing_open_delim ( err : & mut Diag < ' _ > , unmatched_delims : & [ UnmatchedDelim ] ) -> bool {
90- let mut reported_missing_open = false ;
91- for unmatch_brace in unmatched_delims. iter ( ) {
92- if let Some ( delim) = unmatch_brace. found_delim
93- && matches ! ( delim, Delimiter :: Parenthesis | Delimiter :: Bracket )
94- {
95- let missed_open = match delim {
96- Delimiter :: Parenthesis => "(" ,
97- Delimiter :: Bracket => "[" ,
98- _ => unreachable ! ( ) ,
99- } ;
100- err. span_label (
101- unmatch_brace. found_span . shrink_to_lo ( ) ,
102- format ! ( "missing open `{missed_open}` for this delimiter" ) ,
103- ) ;
104- reported_missing_open = true ;
105- }
92+ fn report_missing_open_delim ( unmatched_delim : & UnmatchedDelim ) -> Option < String > {
93+ if let Some ( delim) = unmatched_delim. found_delim
94+ && matches ! ( delim, Delimiter :: Parenthesis | Delimiter :: Bracket )
95+ {
96+ let missed_open = match delim {
97+ Delimiter :: Parenthesis => "(" ,
98+ Delimiter :: Bracket => "[" ,
99+ _ => unreachable ! ( ) ,
100+ } ;
101+ return Some ( missed_open. to_owned ( ) ) ;
106102 }
107- reported_missing_open
103+ None
108104}
109105
110106pub ( super ) fn report_suspicious_mismatch_block (
0 commit comments