diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-04-11 14:24:31 -0700 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2019-04-11 14:45:23 -0700 |
| commit | 9b6b3d618c16976a273cfd4f95408eef37e6c82e (patch) | |
| tree | b4335257f23c2a677e46431b74ea1613a7d5d611 /src/libsyntax/parse/parser.rs | |
| parent | ac037c1359afa273bd5573b5be1b21d074c22219 (diff) | |
| download | rust-9b6b3d618c16976a273cfd4f95408eef37e6c82e.tar.gz rust-9b6b3d618c16976a273cfd4f95408eef37e6c82e.zip | |
review comments
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 31 |
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, ); |
