Skip to content

Commit 7be7efa

Browse files
committed
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)`.
1 parent 6dcc68f commit 7be7efa

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

src/macros.rs

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
use std::collections::HashMap;
1313
use std::panic::{AssertUnwindSafe, catch_unwind};
1414

15-
use rustc_ast::token::{BinOpToken, Delimiter, Token, TokenKind};
15+
use rustc_ast::token::{Delimiter, Token, TokenKind};
1616
use rustc_ast::tokenstream::{TokenStream, TokenStreamIter, TokenTree};
1717
use rustc_ast::{ast, ptr};
1818
use rustc_ast_pretty::pprust;
@@ -841,7 +841,7 @@ impl MacroArgParser {
841841
match tok {
842842
TokenTree::Token(
843843
Token {
844-
kind: TokenKind::BinOp(BinOpToken::Plus),
844+
kind: TokenKind::Plus,
845845
..
846846
},
847847
_,
@@ -855,7 +855,7 @@ impl MacroArgParser {
855855
)
856856
| TokenTree::Token(
857857
Token {
858-
kind: TokenKind::BinOp(BinOpToken::Star),
858+
kind: TokenKind::Star,
859859
..
860860
},
861861
_,
@@ -1090,12 +1090,30 @@ fn force_space_before(tok: &TokenKind) -> bool {
10901090
| TokenKind::OrOr
10911091
| TokenKind::Not
10921092
| TokenKind::Tilde
1093-
| TokenKind::BinOpEq(_)
1093+
| TokenKind::PlusEq
1094+
| TokenKind::MinusEq
1095+
| TokenKind::StarEq
1096+
| TokenKind::SlashEq
1097+
| TokenKind::PercentEq
1098+
| TokenKind::CaretEq
1099+
| TokenKind::AndEq
1100+
| TokenKind::OrEq
1101+
| TokenKind::ShlEq
1102+
| TokenKind::ShrEq
10941103
| TokenKind::At
10951104
| TokenKind::RArrow
10961105
| TokenKind::LArrow
10971106
| TokenKind::FatArrow
1098-
| TokenKind::BinOp(_)
1107+
| TokenKind::Plus
1108+
| TokenKind::Minus
1109+
| TokenKind::Star
1110+
| TokenKind::Slash
1111+
| TokenKind::Percent
1112+
| TokenKind::Caret
1113+
| TokenKind::And
1114+
| TokenKind::Or
1115+
| TokenKind::Shl
1116+
| TokenKind::Shr
10991117
| TokenKind::Pound
11001118
| TokenKind::Dollar => true,
11011119
_ => false,
@@ -1114,7 +1132,7 @@ fn next_space(tok: &TokenKind) -> SpaceState {
11141132

11151133
match tok {
11161134
TokenKind::Not
1117-
| TokenKind::BinOp(BinOpToken::And)
1135+
| TokenKind::And
11181136
| TokenKind::Tilde
11191137
| TokenKind::At
11201138
| TokenKind::Comma

0 commit comments

Comments
 (0)