Rollup merge of #69708 - estebank:tiny, r=petrochenkov
On mismatched delimiters, only point at empty blocks that are in the same line We point at empty blocks when we have mismatched braces to detect cases where editors auto insert `}` after writing `{`. Gate this to only the case where the entire span is in the same line so we never point at explicitly empty blocks.
This commit is contained in:
commit
1a1f948deb
@ -40,6 +40,7 @@ struct TokenTreesReader<'a> {
|
||||
/// Used only for error recovery when arriving to EOF with mismatched braces.
|
||||
matching_delim_spans: Vec<(token::DelimToken, Span, Span)>,
|
||||
last_unclosed_found_span: Option<Span>,
|
||||
/// Collect empty block spans that might have been auto-inserted by editors.
|
||||
last_delim_empty_block_spans: FxHashMap<token::DelimToken, Span>,
|
||||
}
|
||||
|
||||
@ -138,7 +139,11 @@ impl<'a> TokenTreesReader<'a> {
|
||||
|
||||
if tts.is_empty() {
|
||||
let empty_block_span = open_brace_span.to(close_brace_span);
|
||||
self.last_delim_empty_block_spans.insert(delim, empty_block_span);
|
||||
if !sm.is_multiline(empty_block_span) {
|
||||
// Only track if the block is in the form of `{}`, otherwise it is
|
||||
// likely that it was written on purpose.
|
||||
self.last_delim_empty_block_spans.insert(delim, empty_block_span);
|
||||
}
|
||||
}
|
||||
|
||||
if self.open_braces.is_empty() {
|
||||
|
@ -1,14 +1,8 @@
|
||||
error: unexpected closing delimiter: `}`
|
||||
--> $DIR/mismatched-delim-brace-empty-block.rs:5:1
|
||||
|
|
||||
LL | fn main() {
|
||||
| ___________-
|
||||
LL | |
|
||||
LL | | }
|
||||
| |_- this block is empty, you might have not meant to close it
|
||||
LL | let _ = ();
|
||||
LL | }
|
||||
| ^ unexpected closing delimiter
|
||||
LL | }
|
||||
| ^ unexpected closing delimiter
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user