diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-08-13 14:13:02 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-08-13 14:13:02 -0400 |
| commit | 5a0502bdf5da0b1cdb91fb1d0dfa08b4c4a4db0b (patch) | |
| tree | d461fec6453e8e99cefabd712ee27091528731ea /compile.c | |
| parent | 148782e61ba4efbf2981e7d9e18279e92054e149 (diff) | |
Fix some edge cases
Diffstat (limited to 'compile.c')
| -rw-r--r-- | compile.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1386,8 +1386,10 @@ CORD compile(env_t *env, ast_t *ast) switch (Match(ast, Int)->bits) { case 0: - if ((mpz_cmp_si(i, BIGGEST_SMALL_INT) < 0) && (mpz_cmp_si(i, -BIGGEST_SMALL_INT) > 0)) { + if (mpz_cmpabs_ui(i, BIGGEST_SMALL_INT) <= 0) { return CORD_asprintf("I(%s)", str); + } else if (mpz_cmp_si(i, INT64_MAX) <= 0 && mpz_cmp_si(i, INT64_MIN) >= 0) { + return CORD_asprintf("Int$from_i64(%s)", str); } else { return CORD_asprintf("Int$from_text(\"%s\")", str); } |
