Skip to content

Commit ebdaf6c

Browse files
mfikesdnolen
authored and
dnolen
committed
CLJS-2407: Add docstrings for map and positional factory functions
1 parent 49f98a2 commit ebdaf6c

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/main/clojure/cljs/core.cljc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1676,8 +1676,10 @@
16761676
[rsym rname fields]
16771677
(core/let [fn-name (with-meta (symbol (core/str '-> rsym))
16781678
(assoc (meta rsym) :factory :positional))
1679+
docstring (core/str "Positional factory function for " rname ".")
16791680
field-values (if (core/-> rsym meta :internal-ctor) (conj fields nil nil nil) fields)]
16801681
`(defn ~fn-name
1682+
~docstring
16811683
[~@fields]
16821684
(new ~rname ~@field-values))))
16831685

@@ -1859,10 +1861,11 @@
18591861
(core/defn- build-map-factory [rsym rname fields]
18601862
(core/let [fn-name (with-meta (symbol (core/str 'map-> rsym))
18611863
(assoc (meta rsym) :factory :map))
1864+
docstring (core/str "Factory function for " rname ", taking a map of keywords to field values.")
18621865
ms (gensym)
18631866
ks (map keyword fields)
18641867
getters (map (core/fn [k] `(~k ~ms)) ks)]
1865-
`(defn ~fn-name [~ms]
1868+
`(defn ~fn-name ~docstring [~ms]
18661869
(new ~rname ~@getters nil (not-empty (dissoc ~ms ~@ks)) nil))))
18671870

18681871
(core/defmacro defrecord

src/test/cljs/cljs/core_test.cljs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,6 +1483,14 @@
14831483
(is (= "##Inf" (pr-str js/Infinity)))
14841484
(is (= "##-Inf" (pr-str js/-Infinity))))
14851485

1486+
(deftype Foo2407 [x y])
1487+
(defrecord Bar2407 [x y])
1488+
1489+
(deftest test-cljs-2407
1490+
(is (= "Positional factory function for cljs.core-test/Foo2407." (:doc (meta #'->Foo2407))))
1491+
(is (= "Positional factory function for cljs.core-test/Bar2407." (:doc (meta #'->Bar2407))))
1492+
(is (= "Factory function for cljs.core-test/Bar2407, taking a map of keywords to field values." (:doc (meta #'map->Bar2407)))))
1493+
14861494
(comment
14871495
;; ObjMap
14881496
;; (let [ks (map (partial str "foo") (range 500))

0 commit comments

Comments
 (0)