core.match: regex + array patterns (full support); library-conformance directive
Finishes core.match — its full test suite (115/115) now passes, including the two patterns the earlier work left out: - Regex-literal patterns. A #"…" now reads as a regex VALUE (Clojure parity: the reader constructs the Pattern, so a macro receives a regex, not jolt's tagged form), and the analyzer compiles a regex value to the same :regex IR leaf via its source. emit-quoted handles a quoted regex; a regex value carries the java.util.regex.Pattern host tag so extend-protocol/instance? dispatch on it. - Primitive-array patterns. A ^Type hint's :tag is now the SYMBOL (e.g. `ints`), matching the JVM, so core.match's array-tag lookup engages the array specialization (alength/aget). jolt's :tag consumers already tolerate a symbol (hc-cell-num-ret normalizes; tag->nkind/def-meta handle both). Also: a library-conformance directive in CLAUDE.md, and the supported-libraries list (docs + site) simplified to one-line entries — a listed library is assumed to work fully, so no tallies or feature enumerations. core.match + transit-jolt added to the list. Seed change (reader/backend/30-macros) -> re-minted; the rest runtime. JVM- certified corpus rows; the stale `symbol hint -> :tag` divergence is dropped from the allowlist (jolt now matches the JVM). make test + shakesmoke green.
This commit is contained in:
parent
5737a39b7c
commit
67e642bdfb
13 changed files with 77 additions and 83 deletions
12
CLAUDE.md
12
CLAUDE.md
|
|
@ -100,16 +100,18 @@ Issue tracking and design notes live in beads (`bd prime`, `bd memories`).
|
|||
|
||||
## Library conformance
|
||||
|
||||
When a real Clojure library's tests start passing (in full or substantially) on
|
||||
Jolt, treat the docs/specs/tests update as PART OF THE SAME WORK — not a
|
||||
follow-up. In the change that lands the fixes:
|
||||
When a real Clojure library's tests pass on Jolt, treat the docs/specs/tests
|
||||
update as PART OF THE SAME WORK — not a follow-up. In the change that lands the
|
||||
fixes:
|
||||
|
||||
- **Add JVM-certified corpus rows** (`test/chez/corpus.edn`) for every general
|
||||
gap the library shook out — the corpus is the executable contract. Verify each
|
||||
via `make test`'s certify step.
|
||||
- **List the library** in BOTH the in-repo `docs/libraries.md` AND the website
|
||||
(`jolt-lang.github.io`, `resources/md/libraries.md`). State what works and call
|
||||
out any remaining gaps honestly (with the test tally if there is a suite).
|
||||
(`jolt-lang.github.io`, `resources/md/libraries.md`) — one line (name + a short
|
||||
description + any load note like `JOLT_FEATURES` `clj`). Do NOT enumerate what
|
||||
works or paste test tallies; a listed library is assumed to work fully, so only
|
||||
list it once it does.
|
||||
- **Update the affected prose docs and RFCs** — `docs/host-interop.md` for new
|
||||
interop surface, `docs/spec/*.md` / `docs/rfc/*` for semantics, `docs/MODULES.md`
|
||||
if files moved.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue