From 397c2339129fe96b8f03edc511d9b2c8e5ebd900 Mon Sep 17 00:00:00 2001 From: Tommi Reiman Date: Thu, 11 Mar 2021 07:16:58 +0200 Subject: [PATCH] support nil keys in maps --- src/malli/core.cljc | 1 - test/malli/core_test.cljc | 12 ++++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/malli/core.cljc b/src/malli/core.cljc index 794657f57..a1dea849b 100644 --- a/src/malli/core.cljc +++ b/src/malli/core.cljc @@ -184,7 +184,6 @@ (-reference? e) (if naked-keys [[e nil e] e]) (and (= 2 (count e)) (-reference? (first e)) (map? (last e))) (if naked-keys [(conj e (first e)) e]) :else [e (->> (-update (vec e) (dec (count e)) (-comp -form #(schema % options))) (keep identity) (vec))]) - _ (when (nil? k) (miu/-fail! ::naked-keys-not-supported)) [p ?s] (if (or (nil? ?p) (map? ?p)) [?p ?v] [nil ?p]) s (cond-> (or ?s (if (-reference? k) f)) lazy-refs (-lazy options)) c [k p (schema s options)]] diff --git a/test/malli/core_test.cljc b/test/malli/core_test.cljc index 991b1e091..2f40d020b 100644 --- a/test/malli/core_test.cljc +++ b/test/malli/core_test.cljc @@ -869,6 +869,18 @@ (is (true? (m/validate [:map [:b boolean?]] {:b false}))) (is (true? (m/validate [:map [:n nil?]] {:n nil})))) + (testing "nil keys" + (is (true? (m/validate + [:map + ["status" [:enum "ok"]] + [1 any?] + [nil any?] + [::a string?]] + {"status" "ok" + 1 'number + nil :yay + ::a "properly awesome"})))) + (testing "accumulating errors #84" (let [re #"b" schema [:map