Rollup merge of #100565 - TaKO8Ki:suggest-adding-missing-semicolon-before-item, r=compiler-errors
Suggest adding a missing semicolon before an item fixes #100533
This commit is contained in:
commit
54d0f50677
5 changed files with 233 additions and 2 deletions
|
@ -436,6 +436,30 @@ impl Token {
|
|||
|| self == &OpenDelim(Delimiter::Parenthesis)
|
||||
}
|
||||
|
||||
/// Returns `true` if the token can appear at the start of an item.
|
||||
pub fn can_begin_item(&self) -> bool {
|
||||
match self.kind {
|
||||
Ident(name, _) => [
|
||||
kw::Fn,
|
||||
kw::Use,
|
||||
kw::Struct,
|
||||
kw::Enum,
|
||||
kw::Pub,
|
||||
kw::Trait,
|
||||
kw::Extern,
|
||||
kw::Impl,
|
||||
kw::Unsafe,
|
||||
kw::Static,
|
||||
kw::Union,
|
||||
kw::Macro,
|
||||
kw::Mod,
|
||||
kw::Type,
|
||||
]
|
||||
.contains(&name),
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns `true` if the token is any literal.
|
||||
pub fn is_lit(&self) -> bool {
|
||||
matches!(self.kind, Literal(..))
|
||||
|
|
|
@ -927,10 +927,12 @@ impl<'a> Parser<'a> {
|
|||
return Ok(true);
|
||||
} else if self.look_ahead(0, |t| {
|
||||
t == &token::CloseDelim(Delimiter::Brace)
|
||||
|| (t.can_begin_expr() && t != &token::Semi && t != &token::Pound)
|
||||
|| ((t.can_begin_expr() || t.can_begin_item())
|
||||
&& t != &token::Semi
|
||||
&& t != &token::Pound)
|
||||
// Avoid triggering with too many trailing `#` in raw string.
|
||||
|| (sm.is_multiline(
|
||||
self.prev_token.span.shrink_to_hi().until(self.token.span.shrink_to_lo())
|
||||
self.prev_token.span.shrink_to_hi().until(self.token.span.shrink_to_lo()),
|
||||
) && t == &token::Pound)
|
||||
}) && !expected.contains(&TokenType::Token(token::Comma))
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue