emit-fn lowered multi-arity fns to a Scheme case-lambda and variadic fns to a rest-arg lambda; the Scheme rest list is coerced to a jolt seq (nil when empty, via list->cseq), and the named-let wrapper runs that coercion only on first entry so recur carries the seq directly. Single fixed arity keeps the plain-lambda fast path (fib untouched). Also fixes a latent leak in the module-global known-procs: a throw mid-emit (uncompilable body) left the fn's name registered, so a later corpus case binding the same name to a keyword emitted a direct call to a non-procedure. The cleanup now runs on the error path too. Only surfaced once the new arity support let +24 cases compile further before hitting an uncompilable fn. Gate: emit-test 81/81, subset probe 619/619 compiled (was 595), 0 divergences, 2036/2655 out of subset; full run-tests green (125 files). |
||
|---|---|---|
| .. | ||
| bench | ||
| chez | ||
| clojure-stdlib/clojure | ||
| fixtures/cgen-build | ||
| integration | ||
| spec | ||
| support | ||
| unit | ||