diff options
| -rw-r--r-- | src/tokenize.c | 2 | ||||
| -rw-r--r-- | tests/number_literals.sh | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/tokenize.c b/src/tokenize.c index 57a5c61..0b40f2f 100644 --- a/src/tokenize.c +++ b/src/tokenize.c @@ -348,7 +348,7 @@ static void do_tokenize_all(Lexer* l) { infile_next_char(l->src); } tok->kind = TokenKind_literal_int; - tok->value.integer = atoi(builder.buf); + tok->value.integer = strtol(builder.buf, NULL, 0); } else if (isalpha(c) || c == '_') { StrBuilder builder; strbuilder_init(&builder); diff --git a/tests/number_literals.sh b/tests/number_literals.sh new file mode 100644 index 0000000..e96308a --- /dev/null +++ b/tests/number_literals.sh @@ -0,0 +1,10 @@ +test_exit_code 0 <<'EOF' +#include "../../helpers.h" + +int main() { + ASSERT_EQ(0, 0); + ASSERT_EQ(291, 0x123); + ASSERT_EQ(3405691582, 0xcafebabe); + ASSERT_EQ(436, 0664); +} +EOF |
