Skip to content

Commit

Permalink
On mismatched delimiters, only point at empty blocks that are in the …
Browse files Browse the repository at this point in the history
…same line
  • Loading branch information
estebank committed Mar 4, 2020
1 parent 360e42d commit 81f435d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 9 deletions.
7 changes: 6 additions & 1 deletion src/librustc_parse/lexer/tokentrees.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>,
}

Expand Down Expand Up @@ -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() {
Expand Down
10 changes: 2 additions & 8 deletions src/test/ui/parser/mismatched-delim-brace-empty-block.stderr
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 81f435d

Please sign in to comment.