Skip to content

Commit

Permalink
Implement Display for TokenKind (#10678)
Browse files Browse the repository at this point in the history
## Summary

This PR implements `Display` for `TokenKind` to improve error messages.
  • Loading branch information
dhruvmanila committed Mar 31, 2024
1 parent a3a7c79 commit 6d26ec6
Showing 1 changed file with 114 additions and 0 deletions.
114 changes: 114 additions & 0 deletions crates/ruff_python_parser/src/token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,120 @@ impl TryFrom<TokenKind> for UnaryOp {
}
}

impl fmt::Display for TokenKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let value = match self {
TokenKind::Unknown => "<Unknown>",
TokenKind::StartModule => "StartProgram",
TokenKind::StartExpression => "StartExpression",
TokenKind::StartInteractive => "StartInteractive",
TokenKind::Newline => "Newline",
TokenKind::NonLogicalNewline => "NonLogicalNewline",
TokenKind::Indent => "Indent",
TokenKind::Dedent => "Dedent",
TokenKind::EndOfFile => "EOF",
TokenKind::Name => "Name",
TokenKind::Int => "Int",
TokenKind::Float => "Float",
TokenKind::Complex => "Complex",
TokenKind::String => "String",
TokenKind::FStringStart => "FStringStart",
TokenKind::FStringMiddle => "FStringMiddle",
TokenKind::FStringEnd => "FStringEnd",
TokenKind::EscapeCommand => "IPython escape command",
TokenKind::Comment => "Comment",
TokenKind::Question => "?",
TokenKind::Exclamation => "!",
TokenKind::Lpar => "(",
TokenKind::Rpar => ")",
TokenKind::Lsqb => "[",
TokenKind::Rsqb => "]",
TokenKind::Lbrace => "{",
TokenKind::Rbrace => "}",
TokenKind::Equal => "=",
TokenKind::ColonEqual => ":=",
TokenKind::Dot => ".",
TokenKind::Colon => ":",
TokenKind::Semi => ";",
TokenKind::Comma => ",",
TokenKind::Rarrow => "->",
TokenKind::Plus => "+",
TokenKind::Minus => "-",
TokenKind::Star => "*",
TokenKind::DoubleStar => "**",
TokenKind::Slash => "/",
TokenKind::DoubleSlash => "//",
TokenKind::Percent => "%",
TokenKind::Vbar => "|",
TokenKind::Amper => "&",
TokenKind::CircumFlex => "^",
TokenKind::LeftShift => "<<",
TokenKind::RightShift => ">>",
TokenKind::Tilde => "~",
TokenKind::At => "@",
TokenKind::Less => "<",
TokenKind::Greater => ">",
TokenKind::EqEqual => "==",
TokenKind::NotEqual => "!=",
TokenKind::LessEqual => "<=",
TokenKind::GreaterEqual => ">=",
TokenKind::PlusEqual => "+=",
TokenKind::MinusEqual => "-=",
TokenKind::StarEqual => "*=",
TokenKind::DoubleStarEqual => "**=",
TokenKind::SlashEqual => "/=",
TokenKind::DoubleSlashEqual => "//=",
TokenKind::PercentEqual => "%=",
TokenKind::VbarEqual => "|=",
TokenKind::AmperEqual => "&=",
TokenKind::CircumflexEqual => "^=",
TokenKind::LeftShiftEqual => "<<=",
TokenKind::RightShiftEqual => ">>=",
TokenKind::AtEqual => "@=",
TokenKind::Ellipsis => "...",
TokenKind::False => "False",
TokenKind::None => "None",
TokenKind::True => "True",
TokenKind::And => "and",
TokenKind::As => "as",
TokenKind::Assert => "assert",
TokenKind::Async => "async",
TokenKind::Await => "await",
TokenKind::Break => "break",
TokenKind::Class => "class",
TokenKind::Continue => "continue",
TokenKind::Def => "def",
TokenKind::Del => "del",
TokenKind::Elif => "elif",
TokenKind::Else => "else",
TokenKind::Except => "except",
TokenKind::Finally => "finally",
TokenKind::For => "for",
TokenKind::From => "from",
TokenKind::Global => "global",
TokenKind::If => "if",
TokenKind::Import => "import",
TokenKind::In => "in",
TokenKind::Is => "is",
TokenKind::Lambda => "lambda",
TokenKind::Nonlocal => "nonlocal",
TokenKind::Not => "not",
TokenKind::Or => "or",
TokenKind::Pass => "pass",
TokenKind::Raise => "raise",
TokenKind::Return => "return",
TokenKind::Try => "try",
TokenKind::While => "while",
TokenKind::Match => "match",
TokenKind::Type => "type",
TokenKind::Case => "case",
TokenKind::With => "with",
TokenKind::Yield => "yield",
};
f.write_str(value)
}
}

#[cfg(target_pointer_width = "64")]
mod sizes {
use crate::lexer::{LexicalError, LexicalErrorType};
Expand Down

0 comments on commit 6d26ec6

Please sign in to comment.