jolt/jolt-core/clojure/core
Yogthos b21b99b275 destructuring :or, fn :pre/:post, deftype field access + map-like dispatch
General fixes shaken out running clojure.core.cache (66 -> 198 of its assertions):

- Map destructuring applied an :or default only for :keys/:strs/:syms, not a
  direct {x :x} binding — so {x :x :or {x 9}} (and the & {…} kwargs form) ignored
  the default. Apply it for the direct binding too.
- fn didn't implement :pre/:post: a leading conditions map was evaluated as a body
  literal (so % was unbound and (.q %) blew up). Recognize it and assert pre
  before the body, bind % to the result, assert post, return %.
- (.q inst) on a deftype field with no matching method reads the field, like the
  JVM (was "No method q").
- A deftype implementing the clojure.lang collection interfaces now dispatches
  dissoc (without), contains? (containsKey), peek/pop (IPersistentStack), and
  keys/vals (via its Seqable seq) through its methods — they were field-only, so
  core.cache's caches and data.priority-map didn't behave as maps.

JVM-certified corpus rows for each. make test + shakesmoke green.
2026-06-25 10:06:33 -04:00
..
00-kernel.clj Host interop fixes: ==/time/subvec/defonce + corpus cleanup 2026-06-21 15:36:41 -04:00
00-syntax.clj destructuring :or, fn :pre/:post, deftype field access + map-like dispatch 2026-06-25 10:06:33 -04:00
10-seq.clj Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
20-coll.clj Split 20-coll.clj into three collection-tier files 2026-06-23 02:06:24 -04:00
21-coll.clj Split 20-coll.clj into three collection-tier files 2026-06-23 02:06:24 -04:00
22-coll.clj Collection ops carry the receiver's metadata 2026-06-24 13:46:58 -04:00
25-sorted.clj Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00
30-macros.clj core.match: regex + array patterns (full support); library-conformance directive 2026-06-25 00:46:10 -04:00
40-lazy.clj JVM-semantics fixes and small cleanups 2026-06-23 01:36:51 -04:00
50-io.clj Clean up codebase: rename stdlib layer, strip porting residue, fix tooling 2026-06-22 22:18:00 -04:00