sx: format_number helper — defuse int_of_float overflow on huge floats
Shared formatter in sx_types.ml. Small integer-valued floats still print as plain ints; floats outside safe-int range (|n| >= 1e16) now print as %.17g (full precision) instead of silently wrapping to negative or 0. Non-integer values keep %g 6-digit behavior — no existing SX tests regress. Unblocks Number.MAX_VALUE / Math.pow(2,N) style tests in js-on-sx where iterative float loops were collapsing to 0 at ~2^63. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1774,8 +1774,9 @@ def extract_hs_expr(raw):
|
||||
expr = raw.strip().replace('\n', ' ').replace('\t', ' ')
|
||||
# Collapse multiple spaces
|
||||
expr = re.sub(r'\s+', ' ', expr)
|
||||
# Escape quotes for SX string
|
||||
expr = expr.replace('\\', '').replace('"', '\\"')
|
||||
# Escape backslashes (preserve regex escapes like \d, CSS escapes, lambda \)
|
||||
# then escape quotes for SX string.
|
||||
expr = expr.replace('\\', '\\\\').replace('"', '\\"')
|
||||
return expr
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user