A template literal nested in a {...} hole crashed the parser: the outer
literal ended at the inner backtick. The lexer (and ludic-fmt's) now
reads a hole as code, taking strings, chars and templates in it whole.
A decimal literal past 2147483647, or a hex one of more than eight
digits, was wrapped into a negative int; it is a long with its value
now, and giving one to an int is refused. Reseed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 lines
534 B
Markdown
8 lines
534 B
Markdown
bump: patch
|
|
type: fix
|
|
**A template literal inside another's `{…}` hole, and integer literals past 2^31 - 1.** The first
|
|
crashed the compiler (the outer literal ended at the inner one's backtick); a hole is now read as
|
|
code, so strings, chars and templates inside it are taken whole. The second was read as a wrapped
|
|
negative int; a decimal literal past `2147483647`, or a hex one of more than eight digits, is now a
|
|
`long` with its value, and giving one to an `int` is refused. Eight hex digits or fewer are still a
|
|
32-bit pattern.
|