diff --git a/src/parser.cpp b/src/parser.cpp index 0cd96f5b5..0364e2c2b 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -718,7 +718,17 @@ gb_internal ExactValue exact_value_from_token(AstFile *f, Token const &token) { } ExactValue value = exact_value_from_basic_literal(token.kind, s); if (value.kind == ExactValue_Invalid) { - syntax_error(token, "Invalid token literal"); + switch (token.kind) { + case Token_Integer: + syntax_error(token, "Invalid integer literal"); + break; + case Token_Float: + syntax_error(token, "Invalid float literal"); + break; + default: + syntax_error(token, "Invalid token literal"); + break; + } } return value; } diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index f7751d840..1a37043d7 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -433,6 +433,7 @@ gb_internal gb_inline i32 digit_value(Rune r) { } gb_internal gb_inline void scan_mantissa(Tokenizer *t, i32 base) { + base = 16; // always check for any possible letter while (digit_value(t->curr_rune) < base || t->curr_rune == '_') { advance_to_next_rune(t); }