Skip to content

Commit 709cc57

Browse files
committed
CLJS-1744: rest produces nil for larger maps
remove rest logic from create-inod-seq, add rest logic where it belongs in both NodeSeq & ArrayNodeSeq
1 parent 712a8d8 commit 709cc57

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

src/main/cljs/cljs/core.cljs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6999,9 +6999,10 @@ reduces them without incurring seq initialization"
69996999
(first s)))
70007000

70017001
(-rest [coll]
7002-
(if (nil? s)
7003-
(create-inode-seq nodes (+ i 2) nil)
7004-
(create-inode-seq nodes i (next s))))
7002+
(let [ret (if (nil? s)
7003+
(create-inode-seq nodes (+ i 2) nil)
7004+
(create-inode-seq nodes i (next s)))]
7005+
(if-not (nil? ret) ret ())))
70057006

70067007
ISeqable
70077008
(-seq [this] this)
@@ -7032,8 +7033,7 @@ reduces them without incurring seq initialization"
70327033
(if-let [node-seq (.inode-seq node)]
70337034
(NodeSeq. nil nodes (+ j 2) node-seq nil)
70347035
(recur (+ j 2)))
7035-
(recur (+ j 2))))
7036-
())))
7036+
(recur (+ j 2)))))))
70377037
(NodeSeq. nil nodes i s nil))))
70387038

70397039
(deftype ArrayNodeSeq [meta nodes i s ^:mutable __hash]
@@ -7066,7 +7066,9 @@ reduces them without incurring seq initialization"
70667066
ISequential
70677067
ISeq
70687068
(-first [coll] (first s))
7069-
(-rest [coll] (create-array-node-seq nil nodes i (next s)))
7069+
(-rest [coll]
7070+
(let [ret (create-array-node-seq nil nodes i (next s))]
7071+
(if-not (nil? ret) ret ())))
70707072

70717073
ISeqable
70727074
(-seq [this] this)

src/test/cljs/cljs/core_test.cljs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3230,6 +3230,11 @@
32303230
rest rest rest rest rest rest rest rest rest)
32313231
())))
32323232

3233+
(deftest test-cljs-1744
3234+
(doseq [i (range 1 64)]
3235+
(let [m (zipmap (range i) (range i))]
3236+
(is (= () (last (take (inc i) (iterate rest m))))))))
3237+
32333238
(comment
32343239
;; ObjMap
32353240
;; (let [ks (map (partial str "foo") (range 500))

0 commit comments

Comments
 (0)