From bbcadde11fa5941fda804faa8fc92a5f33a242cf Mon Sep 17 00:00:00 2001 From: Samuel Miller Date: Sat, 15 Aug 2015 22:11:54 -0600 Subject: [PATCH] CLJS-1353: range inconsistent with Clojure if step is 0 Changed the implementation to match Clojure's and also updated tests. Used == instead of = --- src/main/cljs/cljs/core.cljs | 9 ++++----- src/test/cljs/cljs/core_test.cljs | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/cljs/cljs/core.cljs b/src/main/cljs/cljs/core.cljs index d35a57d1c0..a1397efe45 100644 --- a/src/main/cljs/cljs/core.cljs +++ b/src/main/cljs/cljs/core.cljs @@ -8430,11 +8430,10 @@ reduces them without incurring seq initialization" ISeqable (-seq [rng] - (if (pos? step) - (when (< start end) - rng) - (when (> start end) - rng))) + (cond + (pos? step) (when (< start end) rng) + (neg? step) (when (> start end) rng) + :else (when-not (== start end) rng))) ISeq (-first [rng] diff --git a/src/test/cljs/cljs/core_test.cljs b/src/test/cljs/cljs/core_test.cljs index fed54edb47..b1b3d40d89 100644 --- a/src/test/cljs/cljs/core_test.cljs +++ b/src/test/cljs/cljs/core_test.cljs @@ -1221,11 +1221,11 @@ (is (= (range 0 -3 -1) (list 0 -1 -2))) (is (= (range 3 0 -1) (list 3 2 1))) (is (= (range 0 10 -1) (list))) - (is (= (range 0 1 0) (list))) + (is (= (take 3 (range 0 1 0)) (list 0 0 0))) (is (= (range 10 0 1) (list))) (is (= (range 0 0 0) (list))) (is (= (count (range 0 10 -1)) 0)) - (is (= (count (range 0 1 0)) 0)) + (is (= (count (take 3 (range 0 2 0))) 3)) (is (= (count (range 10 0 1)) 0)) (is (= (count (range 0 0 0)) 0)) (is (= (take 3 (range 1 0 0)) (list 1 1 1)))