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
|
@ -770,12 +770,12 @@ pub trait PrintState<'a>: std::ops::Deref<Target = pp::Printer> + std::ops::Dere
|
|||
self.bclose(span, empty);
|
||||
}
|
||||
delim => {
|
||||
let token_str = self.token_kind_to_string(&token::OpenDelim(delim));
|
||||
let token_str = self.token_kind_to_string(&delim.as_open_token_kind());
|
||||
self.word(token_str);
|
||||
self.ibox(0);
|
||||
self.print_tts(tts, convert_dollar_crate);
|
||||
self.end();
|
||||
let token_str = self.token_kind_to_string(&token::CloseDelim(delim));
|
||||
let token_str = self.token_kind_to_string(&delim.as_close_token_kind());
|
||||
self.word(token_str);
|
||||
}
|
||||
}
|
||||
|
@ -932,14 +932,13 @@ pub trait PrintState<'a>: std::ops::Deref<Target = pp::Printer> + std::ops::Dere
|
|||
token::RArrow => "->".into(),
|
||||
token::LArrow => "<-".into(),
|
||||
token::FatArrow => "=>".into(),
|
||||
token::OpenDelim(Delimiter::Parenthesis) => "(".into(),
|
||||
token::CloseDelim(Delimiter::Parenthesis) => ")".into(),
|
||||
token::OpenDelim(Delimiter::Bracket) => "[".into(),
|
||||
token::CloseDelim(Delimiter::Bracket) => "]".into(),
|
||||
token::OpenDelim(Delimiter::Brace) => "{".into(),
|
||||
token::CloseDelim(Delimiter::Brace) => "}".into(),
|
||||
token::OpenDelim(Delimiter::Invisible(_))
|
||||
| token::CloseDelim(Delimiter::Invisible(_)) => "".into(),
|
||||
token::OpenParen => "(".into(),
|
||||
token::CloseParen => ")".into(),
|
||||
token::OpenBracket => "[".into(),
|
||||
token::CloseBracket => "]".into(),
|
||||
token::OpenBrace => "{".into(),
|
||||
token::CloseBrace => "}".into(),
|
||||
token::OpenInvisible(_) | token::CloseInvisible(_) => "".into(),
|
||||
token::Pound => "#".into(),
|
||||
token::Dollar => "$".into(),
|
||||
token::Question => "?".into(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue