about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-04-11 14:24:31 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-04-11 14:45:23 -0700
commit9b6b3d618c16976a273cfd4f95408eef37e6c82e (patch)
treeb4335257f23c2a677e46431b74ea1613a7d5d611 /src/libsyntax/parse/parser.rs
parentac037c1359afa273bd5573b5be1b21d074c22219 (diff)
downloadrust-9b6b3d618c16976a273cfd4f95408eef37e6c82e.tar.gz
rust-9b6b3d618c16976a273cfd4f95408eef37e6c82e.zip
review comments
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
-rw-r--r--src/libsyntax/parse/parser.rs31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index d2875a5f275..7992867692e 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -796,10 +796,6 @@ impl<'a> Parser<'a> {
                 .chain(inedible.iter().map(|x| TokenType::Token(x.clone())))
                 .chain(self.expected_tokens.iter().cloned())
                 .collect::<Vec<_>>();
-            let expects_semi = expected.iter().any(|t| match t {
-                TokenType::Token(token::Semi) => true,
-                _ => false,
-            });
             expected.sort_by_cached_key(|x| x.to_string());
             expected.dedup();
             let expect = tokens_to_string(&expected[..]);
@@ -839,17 +835,6 @@ impl<'a> Parser<'a> {
                     Applicability::MaybeIncorrect,
                 );
             }
-            let is_semi_suggestable = expects_semi && (
-                self.token.is_keyword(keywords::Break) ||
-                self.token.is_keyword(keywords::Continue) ||
-                self.token.is_keyword(keywords::For) ||
-                self.token.is_keyword(keywords::If) ||
-                self.token.is_keyword(keywords::Let) ||
-                self.token.is_keyword(keywords::Loop) ||
-                self.token.is_keyword(keywords::Match) ||
-                self.token.is_keyword(keywords::Return) ||
-                self.token.is_keyword(keywords::While)
-            );
             let sp = if self.token == token::Token::Eof {
                 // This is EOF, don't want to point at the following char, but rather the last token
                 self.prev_span
@@ -866,6 +851,20 @@ impl<'a> Parser<'a> {
                 }
             }
 
+            let is_semi_suggestable = expected.iter().any(|t| match t {
+                TokenType::Token(token::Semi) => true, // we expect a `;` here
+                _ => false,
+            }) && ( // a `;` would be expected before the current keyword
+                self.token.is_keyword(keywords::Break) ||
+                self.token.is_keyword(keywords::Continue) ||
+                self.token.is_keyword(keywords::For) ||
+                self.token.is_keyword(keywords::If) ||
+                self.token.is_keyword(keywords::Let) ||
+                self.token.is_keyword(keywords::Loop) ||
+                self.token.is_keyword(keywords::Match) ||
+                self.token.is_keyword(keywords::Return) ||
+                self.token.is_keyword(keywords::While)
+            );
             let cm = self.sess.source_map();
             match (cm.lookup_line(self.span.lo()), cm.lookup_line(sp.lo())) {
                 (Ok(ref a), Ok(ref b)) if a.line != b.line && is_semi_suggestable => {
@@ -873,7 +872,7 @@ impl<'a> Parser<'a> {
                     // High likelihood that it is only a missing `;`.
                     err.span_suggestion_short(
                         label_sp,
-                        "missing semicolon here",
+                        "a semicolon may be missing here",
                         ";".to_string(),
                         Applicability::MaybeIncorrect,
                     );