fix(lang): a template inside another's hole, and integer literals past 2^31 - 1
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>
This commit is contained in:
parent
b401f7acc1
commit
afa4d23a4f
17 changed files with 47107 additions and 46056 deletions
8
changes/lexer-literals.md
Normal file
8
changes/lexer-literals.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue