Remove token::{Open,Close}Delim.
By replacing them with `{Open,Close}{Param,Brace,Bracket,Invisible}`.
PR #137902 made `ast::TokenKind` more like `lexer::TokenKind` by
replacing the compound `BinOp{,Eq}(BinOpToken)` variants with fieldless
variants `Plus`, `Minus`, `Star`, etc. This commit does a similar thing
with delimiters. It also makes `ast::TokenKind` more similar to
`parser::TokenType`.
This requires a few new methods:
- `TokenKind::is_{,open_,close_}delim()` replace various kinds of
pattern matches.
- `Delimiter::as_{open,close}_token_kind` are used to convert
`Delimiter` values to `TokenKind`.
Despite these additions, it's a net reduction in lines of code. This is
because e.g. `token::OpenParen` is so much shorter than
`token::OpenDelim(Delimiter::Parenthesis)` that many multi-line forms
reduce to single line forms. And many places where the number of lines
doesn't change are still easier to read, just because the names are
shorter, e.g.:
```
- } else if self.token != token::CloseDelim(Delimiter::Brace) {
+ } else if self.token != token::CloseBrace {
```
This commit is contained in:
parent
a15cce2690
commit
bf8ce32558
30 changed files with 456 additions and 498 deletions
|
|
@ -96,7 +96,7 @@ fn print_tt(printer: &mut Printer<'_>, tt: &TokenTree) {
|
|||
}
|
||||
}
|
||||
TokenTree::Delimited(_span, _spacing, delim, tts) => {
|
||||
let open_delim = printer.token_kind_to_string(&token::OpenDelim(*delim));
|
||||
let open_delim = printer.token_kind_to_string(&delim.as_open_token_kind());
|
||||
printer.word(open_delim);
|
||||
if !tts.is_empty() {
|
||||
if *delim == Delimiter::Brace {
|
||||
|
|
@ -107,7 +107,7 @@ fn print_tt(printer: &mut Printer<'_>, tt: &TokenTree) {
|
|||
printer.space();
|
||||
}
|
||||
}
|
||||
let close_delim = printer.token_kind_to_string(&token::CloseDelim(*delim));
|
||||
let close_delim = printer.token_kind_to_string(&delim.as_close_token_kind());
|
||||
printer.word(close_delim);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue