clojure-dev 2026-07-25

When porting 1.13 destructuring to SCI + babashka, I found a regression with the test corpus.

$ clojure -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.13.0-alpha5"}
                        com.exoscale/lingo {:mvn/version "1.0.5"}}}' \
  -M -e "(require 'exoscale.lingo)"
Syntax error compiling at (exoscale/lingo/highlight.cljc:124:18).
Unable to resolve symbol: pred in this context
This runs on 1.12. The reason is a "bad" :or which depends on a destructured value in :keys. Clj-kondo flags this already for some time (I believe years). I think it's worth noting that it used to run, but it's perhaps undefined behavior that's not supposed to work. A minimal repro:
clojure -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.13.0-alpha5"}}}' \
  -M -e '(prn (let [{:keys [a b] :or {b (str "default-for-" a)}} {:a "x"}] b))'
cc @alexmiller@richhickey@mpenet (author of the lib)

👀 2
Alex Miller (Clojure team) 2026-07-25T17:01:35.636699Z

Those things were never valid and now that's more obvious (so not a regression imo). I've filed an issue with the cats library too where I found another case like this.