Replace ast::TokenKind::BinOp{,Eq}
and remove BinOpToken
.
`BinOpToken` is badly named, because it only covers the assignable binary ops and excludes comparisons and `&&`/`||`. Its use in `ast::TokenKind` does allow a small amount of code sharing, but it's a clumsy factoring. This commit removes `ast::TokenKind::BinOp{,Eq}`, replacing each one with 10 individual variants. This makes `ast::TokenKind` more similar to `rustc_lexer::TokenKind`, which has individual variants for all operators. Although the number of lines of code increases, the number of chars decreases due to the frequent use of shorter names like `token::Plus` instead of `token::BinOp(BinOpToken::Plus)`.
This commit is contained in:
parent
7c4a55c2ac
commit
2a1e2e9632
19 changed files with 352 additions and 309 deletions
|
@ -442,7 +442,16 @@ impl<'a> Parser<'a> {
|
|||
/// Parses the RHS of a local variable declaration (e.g., `= 14;`).
|
||||
fn parse_initializer(&mut self, eq_optional: bool) -> PResult<'a, Option<P<Expr>>> {
|
||||
let eq_consumed = match self.token.kind {
|
||||
token::BinOpEq(..) => {
|
||||
token::PlusEq
|
||||
| token::MinusEq
|
||||
| token::StarEq
|
||||
| token::SlashEq
|
||||
| token::PercentEq
|
||||
| token::CaretEq
|
||||
| token::AndEq
|
||||
| token::OrEq
|
||||
| token::ShlEq
|
||||
| token::ShrEq => {
|
||||
// Recover `let x <op>= 1` as `let x = 1` We must not use `+ BytePos(1)` here
|
||||
// because `<op>` can be a multi-byte lookalike that was recovered, e.g. `➖=` (the
|
||||
// `➖` is a U+2796 Heavy Minus Sign Unicode Character) that was recovered as a
|
||||
|
@ -688,7 +697,7 @@ impl<'a> Parser<'a> {
|
|||
if self.token == token::Eof {
|
||||
break;
|
||||
}
|
||||
if self.is_vcs_conflict_marker(&TokenKind::BinOp(token::Shl), &TokenKind::Lt) {
|
||||
if self.is_vcs_conflict_marker(&TokenKind::Shl, &TokenKind::Lt) {
|
||||
// Account for `<<<<<<<` diff markers. We can't proactively error here because
|
||||
// that can be a valid path start, so we snapshot and reparse only we've
|
||||
// encountered another parse error.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue