When accidentally switching keyword and (previously undefined) symbol in map destructuring, an error is correctly thrown:
(let (link: {:b b} {:b 1}) b)
=> CompilerException java.lang.RuntimeException: Unable to resolve symbol: b in this context, compiling: (/tmp/form-init7939480206147277345.clj:1:1)
When the symbol ("a" used below) is defined, however, there is a more subtle error:
(def a 0)
(let (link: {:a a} {:a 1}) a)
=> nil
Expected: Destructuring should only accept the defined keywords :or, :keys, :as, :strs and :syms as keys in a destructuring map.