Rollup merge of #137902 - nnethercote:ast-lexer-TokenKind, r=compiler-errors

Make `ast::TokenKind` more like `lexer::TokenKind`

This is step 2 of https://github.com/rust-lang/compiler-team/issues/831.

r? `@spastorino`
This commit is contained in:
Matthias Krüger 2025-03-03 20:47:13 +01:00 committed by GitHub
commit decb0c9bad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 396 additions and 353 deletions

View file

@ -12,7 +12,7 @@
use std::collections::HashMap;
use std::panic::{AssertUnwindSafe, catch_unwind};
use rustc_ast::token::{BinOpToken, Delimiter, Token, TokenKind};
use rustc_ast::token::{Delimiter, Token, TokenKind};
use rustc_ast::tokenstream::{TokenStream, TokenStreamIter, TokenTree};
use rustc_ast::{ast, ptr};
use rustc_ast_pretty::pprust;
@ -841,7 +841,7 @@ impl MacroArgParser {
match tok {
TokenTree::Token(
Token {
kind: TokenKind::BinOp(BinOpToken::Plus),
kind: TokenKind::Plus,
..
},
_,
@ -855,7 +855,7 @@ impl MacroArgParser {
)
| TokenTree::Token(
Token {
kind: TokenKind::BinOp(BinOpToken::Star),
kind: TokenKind::Star,
..
},
_,
@ -1088,14 +1088,32 @@ fn force_space_before(tok: &TokenKind) -> bool {
| TokenKind::Gt
| TokenKind::AndAnd
| TokenKind::OrOr
| TokenKind::Not
| TokenKind::Bang
| TokenKind::Tilde
| TokenKind::BinOpEq(_)
| TokenKind::PlusEq
| TokenKind::MinusEq
| TokenKind::StarEq
| TokenKind::SlashEq
| TokenKind::PercentEq
| TokenKind::CaretEq
| TokenKind::AndEq
| TokenKind::OrEq
| TokenKind::ShlEq
| TokenKind::ShrEq
| TokenKind::At
| TokenKind::RArrow
| TokenKind::LArrow
| TokenKind::FatArrow
| TokenKind::BinOp(_)
| TokenKind::Plus
| TokenKind::Minus
| TokenKind::Star
| TokenKind::Slash
| TokenKind::Percent
| TokenKind::Caret
| TokenKind::And
| TokenKind::Or
| TokenKind::Shl
| TokenKind::Shr
| TokenKind::Pound
| TokenKind::Dollar => true,
_ => false,
@ -1113,8 +1131,8 @@ fn next_space(tok: &TokenKind) -> SpaceState {
debug!("next_space: {:?}", tok);
match tok {
TokenKind::Not
| TokenKind::BinOp(BinOpToken::And)
TokenKind::Bang
| TokenKind::And
| TokenKind::Tilde
| TokenKind::At
| TokenKind::Comma