From 315d23bf2148e831b0c14a118841133aacc1fb96 Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Sun, 23 Mar 2025 11:37:29 +1300 Subject: Report token without prefix in invalid literal errors Previously, the token quoted in the error message for an invalid literal error included the radix prefix. This is already visible in the highlighted source report, and implied by the named radix in the error message. --- src/stages/syntactic.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/stages/syntactic.rs b/src/stages/syntactic.rs index 3be8307..14f8815 100644 --- a/src/stages/syntactic.rs +++ b/src/stages/syntactic.rs @@ -169,14 +169,16 @@ fn parse_syntactic_from_tokeniser(mut t: Tokeniser) -> Result { let token = format!("{c}{}", t.eat_token()); if let Some(hex_string) = token.strip_prefix("0x") { - match parse_integer_literal(hex_string, 16) { + let hex_string = hex_string.to_string(); + match parse_integer_literal(&hex_string, 16) { Ok(value) => SyntacticToken::IntegerLiteral(value), - Err(_) => err!(SyntacticError::InvalidHexadecimalLiteral(token)), + Err(_) => err!(SyntacticError::InvalidHexadecimalLiteral(hex_string)), } } else if let Some(binary_string) = token.strip_prefix("0b") { - match parse_integer_literal(binary_string, 2) { + let binary_string = binary_string.to_string(); + match parse_integer_literal(&binary_string, 2) { Ok(value) => SyntacticToken::IntegerLiteral(value), - Err(_) => err!(SyntacticError::InvalidBinaryLiteral(token)), + Err(_) => err!(SyntacticError::InvalidBinaryLiteral(binary_string)), } } else { match parse_integer_literal(&token, 10) { -- cgit v1.2.3-70-g09d2