Welcome! Please see the About page for a little more info on how this works.
(let [{x :x} '({:x "foo"})] x) ;; => "foo"
Has nothing to do with tooling - it's just how destructuring works in Clojure:
user=> (clojure.pprint/pprint (destructure '[{a :a} []])) [map__6 [] map__6 (if (clojure.core/seq? map__6) (if (clojure.core/next map__6) (clojure.lang.PersistentArrayMap/createAsIfByAssoc (clojure.core/to-array map__6)) (if (clojure.core/seq map__6) (clojure.core/first map__6) clojure.lang.PersistentArrayMap/EMPTY)) map__6) a (clojure.core/get map__6 :a)] nil
This behavior in particular is a side-effect of implementing this ticket: https://clojure.atlassian.net/browse/CLJ-2603
Ok, I just realized that this might be a problem in shadow-cljs or other downstream tooling that I’m using.