Skip to content

Commit 6f14ccb

Browse files
mfikesdnolen
authored andcommitted
CLJS-1567: make-array macro missing > 2 arg arity
Adds the additional arity to the macro, along with tests for the macro and fn.
1 parent 431b6e8 commit 6f14ccb

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

src/main/clojure/cljs/core.cljc

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2335,7 +2335,15 @@
23352335
`(js/Array. ~size))
23362336
assoc :tag 'array))
23372337
([type size]
2338-
`(make-array ~size)))
2338+
`(make-array ~size))
2339+
([type size & more-sizes]
2340+
(vary-meta
2341+
`(let [dims# (list ~@more-sizes)
2342+
dimarray# (make-array ~size)]
2343+
(dotimes [i# (alength dimarray#)]
2344+
(aset dimarray# i# (apply make-array nil dims#)))
2345+
dimarray#)
2346+
assoc :tag 'array)))
23392347

23402348
(core/defmacro list
23412349
([] '(.-EMPTY cljs.core/List))

src/test/cljs/cljs/core_test.cljs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,37 @@
10611061
(is (primitive-arrays-equal #js [nil] (make-array nil 1)))
10621062
(is (primitive-arrays-equal #js [nil] (apply make-array [nil 1])))
10631063
(is (primitive-arrays-equal #js [nil nil] (make-array nil 2)))
1064-
(is (primitive-arrays-equal #js [nil nil] (apply make-array [nil 2])))))
1064+
(is (primitive-arrays-equal #js [nil nil] (apply make-array [nil 2])))
1065+
(is (primitive-arrays-equal #js [] (make-array nil 0 0)))
1066+
(is (primitive-arrays-equal #js [] (apply make-array [nil 0 0])))
1067+
(is (primitive-arrays-equal #js [] (make-array nil 0 1)))
1068+
(is (primitive-arrays-equal #js [] (apply make-array [nil 0 1])))
1069+
(is (primitive-arrays-equal #js [#js []] (make-array nil 1 0)))
1070+
(is (primitive-arrays-equal #js [#js []] (apply make-array [nil 1 0])))
1071+
(is (primitive-arrays-equal #js [#js [] #js []] (make-array nil 2 0)))
1072+
(is (primitive-arrays-equal #js [#js [] #js []] (apply make-array [nil 2 0])))
1073+
(is (primitive-arrays-equal #js [#js [nil]] (make-array nil 1 1)))
1074+
(is (primitive-arrays-equal #js [#js [nil]] (apply make-array [nil 1 1])))
1075+
(is (primitive-arrays-equal #js [#js [nil] #js [nil]] (make-array nil 2 1)))
1076+
(is (primitive-arrays-equal #js [#js [nil] #js [nil]] (apply make-array [nil 2 1])))
1077+
(is (primitive-arrays-equal #js [#js [nil nil] #js [nil nil]] (make-array nil 2 2)))
1078+
(is (primitive-arrays-equal #js [#js [nil nil] #js [nil nil]] (apply make-array [nil 2 2])))
1079+
(is (primitive-arrays-equal #js [] (make-array nil 0 0 0)))
1080+
(is (primitive-arrays-equal #js [] (apply make-array [nil 0 0 0])))
1081+
(is (primitive-arrays-equal #js [] (make-array nil 0 1 1)))
1082+
(is (primitive-arrays-equal #js [] (apply make-array [nil 0 1 1])))
1083+
(is (primitive-arrays-equal #js [#js []] (make-array nil 1 0 0)))
1084+
(is (primitive-arrays-equal #js [#js []] (apply make-array [nil 1 0 0])))
1085+
(is (primitive-arrays-equal #js [#js [] #js []] (make-array nil 2 0 0)))
1086+
(is (primitive-arrays-equal #js [#js [] #js []] (apply make-array [nil 2 0 0])))
1087+
(is (primitive-arrays-equal #js [#js [#js []]] (make-array nil 1 1 0)))
1088+
(is (primitive-arrays-equal #js [#js [#js []]] (apply make-array [nil 1 1 0])))
1089+
(is (primitive-arrays-equal #js [#js [#js [nil]]] (make-array nil 1 1 1)))
1090+
(is (primitive-arrays-equal #js [#js [#js [nil]]] (apply make-array [nil 1 1 1])))
1091+
(is (primitive-arrays-equal #js [#js [#js [nil nil] #js [nil nil]] #js [#js [nil nil] #js [nil nil]]]
1092+
(make-array nil 2 2 2)))
1093+
(is (primitive-arrays-equal #js [#js [#js [nil nil] #js [nil nil]] #js [#js [nil nil] #js [nil nil]]]
1094+
(apply make-array [nil 2 2 2])))))
10651095

10661096
(deftest test-rearrange-sequential
10671097
(testing "Test rearranging sequential collections"

0 commit comments

Comments
 (0)