Skip to content

Commit 682f5fe

Browse files
author
dnolen
committed
CLJS-1918: case needs a type hint for keywords case when using *warn-on-infer*
add keyword hint
1 parent 85f348c commit 682f5fe

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

src/main/clojure/cljs/core.cljc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2294,7 +2294,7 @@
22942294
tests (mapv #(if (seq? %) (mapv kw-str %) [(kw-str %)]) (take-nth 2 no-default))
22952295
thens (vec (take-nth 2 (drop 1 no-default)))]
22962296
`(let [~esym ~e
2297-
~esym (if (keyword? ~esym) (.-fqn ~esym) nil)]
2297+
~esym (if (keyword? ~esym) (.-fqn ~(vary-meta esym assoc :tag 'cljs.core/Keyword)) nil)]
22982298
(case* ~esym ~tests ~thens ~default)))
22992299

23002300
;; equality

src/test/clojure/cljs/analyzer_tests.clj

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,3 +1009,16 @@
10091009
:warnings ws
10101010
:with-core? true})]
10111011
(is (zero? (count @ws)))))
1012+
1013+
(deftest test-cljs-1918-infer-with-case-keywords
1014+
(let [ws (atom [])
1015+
res (infer-test-helper
1016+
{:forms '[(ns cjls-1918.core)
1017+
(defn foo [x]
1018+
(cljs.core/case x
1019+
:foo 1
1020+
nil))]
1021+
:externs ["src/test/externs/test.js"]
1022+
:warnings ws
1023+
:with-core? true})]
1024+
(is (zero? (count @ws)))))

0 commit comments

Comments
 (0)