Fix four bugs surfaced by the commonmark-app example
- regex: bounded quantifiers {n,m} no longer expand exponentially. The
desugaring inlined the continuation per optional level, doubling it each
time, so {0,61} built a PEG the compiler expanded to ~2^61 nodes and hung.
Each level is now its own grammar rule referenced by name (jolt-3xur).
- strings are a seqable of chars for vec/set/into, matching seq. They went
through realize-for-iteration, which had no string case, so into/set got
raw bytes (code points) and set threw; vec used string/from-bytes (1-char
strings). realize-for-iteration now maps make-char over the bytes, and
core-vec matches (jolt-dl4s).
- clojure.string/split takes Java Pattern.split limit semantics: negative
keeps trailing empties, 0/omitted drops them (a no-match result stays
[input]), positive caps the part count with the remainder unsplit. It used
to delegate the limit to take, so a negative limit returned [] and the
2-arg form never trimmed trailing empties (jolt-ik3a).
- System/exit is registered (maps to os/exit), so (System/exit n) works
(jolt-w2wf).
This commit is contained in:
parent
8192fc9541
commit
91103fb52e
9 changed files with 70 additions and 13 deletions
|
|
@ -159,6 +159,8 @@
|
|||
"[(Boolean/parseBoolean \"true\") (Boolean/parseBoolean \"false\") (Boolean/parseBoolean \"yes\")]"]
|
||||
["System/getenv is a map" "true"
|
||||
"(string? (get (System/getenv) \"HOME\"))"]
|
||||
# registered, so (System/exit n) resolves; actual exit verified via subprocess
|
||||
["System/exit resolves" "true" "(fn? System/exit)"]
|
||||
# NOT every? alone — it held vacuously while seq over a raw host table
|
||||
# yielded nothing, hiding that read-system-env came back empty
|
||||
["getenv entries destructure (non-empty)" "true"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue