jolt/test/integration
Yogthos 297d92fbb8 core: fix jolt-r81 at root — move lazy-seq/lazy-cat to the early syntax tier
Root cause: lazy-seq/lazy-cat were defined in 30-macros, which loads AFTER the
seq/coll tiers (10-seq, 20-coll) that use them. In compile mode a tier's forms
are compiled as the tier loads, so (lazy-seq …) in those tiers was compiled when
lazy-seq was not yet a registered macro — i.e. as a CALL to the macro-as-function,
which at runtime returns its own expansion `(make-lazy-seq (fn* [] …))` as data.
That leaked form then flowed into ops like `odd?` (partition-by) → type errors,
or silently produced wrong structure. Interpret/self-host masked it (expand at
call time); the eager fallbacks and the earlier letfn versions masked it by
falling back to the interpreter.

Fix: define lazy-seq/lazy-cat in 00-syntax (loaded first), exactly as when-let
already is for the same reason. They use only seed fns (make-lazy-seq/coll->cells/
concat) + map. With the macro registered early, the seq/coll tiers compile
(lazy-seq …) correctly.

With the root fixed, interleave/reductions/tree-seq drop their letfn workarounds
and use the canonical recursive Clojure forms (top-level / fn-self-name recursion
inside lazy-seq), verified leak-free in compile mode with strict probes.

Regression guards added: partition-by with odd? (the strict pred that exposed the
leak; the prior case used identity which masked it), reductions over an infinite
range, tree-seq summed through a strict filter — all ×3 modes.

Gate: conformance 249x3, lazy-infinite 40/40, fixpoint, self-host, specs+unit green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 17:47:52 -04:00
..
aot-test.janet aot: marshal compiled namespaces to bytecode images 2026-06-06 02:57:32 -04:00
api-test.janet test: restructure into unit / integration / spec layers + shared harness 2026-06-05 00:00:16 -04:00
bootstrap-fixpoint-test.janet test: bootstrap fixpoint (stage1 == stage2 == stage3 behavioral parity) 2026-06-06 18:27:14 -04:00
cli-test.janet cli: babashka-style flags (--version, --eval, --main, nrepl-server) 2026-06-05 23:20:29 -04:00
clojure-stdlib-suite-test.janet edn: construct set/nested values from reader forms (49/1, only #uuid left) 2026-06-06 19:49:07 -04:00
clojure-test-suite-test.janet Step 5 fix: revert interleave to eager, update baseline to 3971 2026-06-08 12:54:18 -04:00
compile-mode-test.janet compiler: compile multi-arity, named, and variadic fns + recur-in-fn 2026-06-06 01:56:01 -04:00
conformance-test.janet core: fix jolt-r81 at root — move lazy-seq/lazy-cat to the early syntax tier 2026-06-08 17:47:52 -04:00
deps-conformance-test.janet deps phases 3-4: uberscript bundling + conformance harness 2026-06-05 23:36:40 -04:00
deps-loader-test.janet test: fall back to /tmp when TMPDIR is unset (Linux CI) 2026-06-05 23:07:20 -04:00
deps-resolve-test.janet test: fall back to /tmp when TMPDIR is unset (Linux CI) 2026-06-05 23:07:20 -04:00
direct-linking-test.janet compiler: direct-linking (call-site/unit, Clojure model) + :aot-core? flag 2026-06-06 17:13:54 -04:00
dispatch-cache-test.janet perf: generation-guarded cache for multimethod hierarchy dispatch 2026-06-06 18:36:11 -04:00
embedded-stdlib-test.janet bake the .clj stdlib into the binary 2026-06-05 23:51:03 -04:00
features-test.janet chore: remove dev artifacts; keep only published code/tests/docs 2026-06-05 15:45:04 -04:00
jank-conformance-test.janet test: restructure into unit / integration / spec layers + shared harness 2026-06-05 00:00:16 -04:00
lazy-infinite-test.janet core: Phase 5 Option A — lazy interleave/reductions/tree-seq via letfn 2026-06-08 17:28:55 -04:00
namespace-test.janet test(spec): macros, reader, host-interop, namespaces — fix def-doc, resolve, %& 2026-06-05 00:35:48 -04:00
nrepl-test.janet fix: pr-str/str of a var, and nREPL namespace switching 2026-06-05 22:05:45 -04:00
sci-bootstrap-test.janet test: restructure into unit / integration / spec layers + shared harness 2026-06-05 00:00:16 -04:00
sci-runtime-test.janet test: restructure into unit / integration / spec layers + shared harness 2026-06-05 00:00:16 -04:00
self-host-test.janet core: move nfirst to the Clojure overlay 2026-06-06 11:49:09 -04:00
staged-bootstrap-test.janet core: staged-bootstrap kernel tier; move second/peek/subvec/mapv/update to Clojure 2026-06-06 13:15:17 -04:00
suite-worker.janet self-host: JOLT_SELFHOST suite mode; keep analyzer interpreted for now 2026-06-06 06:41:36 -04:00
systematic-coverage-test.janet feat(strictness): numeric ops reject non-numbers/non-integers like Clojure 2026-06-05 10:58:21 -04:00
uberscript-test.janet deps phases 3-4: uberscript bundling + conformance harness 2026-06-05 23:36:40 -04:00