about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2018-12-16 20:00:17 -0800
committerEsteban Küber <esteban@kuber.com.ar>2018-12-17 10:22:49 -0800
commit25b3c825084c4743110b2a1cc574c691dc2f0142 (patch)
tree2faf13e7af89809b45336b1ff29a003c2166f114 /src/libsyntax
parentf4a421ee3cf1259f0750ac7fabd19da1d8551e4c (diff)
downloadrust-25b3c825084c4743110b2a1cc574c691dc2f0142.tar.gz
rust-25b3c825084c4743110b2a1cc574c691dc2f0142.zip
Do not point at delim spans for complete correct blocks
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/parse/lexer/tokentrees.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/libsyntax/parse/lexer/tokentrees.rs b/src/libsyntax/parse/lexer/tokentrees.rs
index 86c87cf898d..f087dd9bcbc 100644
--- a/src/libsyntax/parse/lexer/tokentrees.rs
+++ b/src/libsyntax/parse/lexer/tokentrees.rs
@@ -97,7 +97,15 @@ impl<'a> StringReader<'a> {
                     // Correct delimiter.
                     token::CloseDelim(d) if d == delim => {
                         let (open_brace, open_brace_span) = self.open_braces.pop().unwrap();
-                        self.matching_delim_spans.push((open_brace, open_brace_span, self.span));
+                        if self.open_braces.len() == 0 {
+                            // Clear up these spans to avoid suggesting them as we've found
+                            // properly matched delimiters so far for an entire block.
+                            self.matching_delim_spans.clear();
+                        } else {
+                            self.matching_delim_spans.push(
+                                (open_brace, open_brace_span, self.span),
+                            );
+                        }
                         // Parse the close delimiter.
                         self.real_token();
                     }