summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/emacs-lisp/stream.el8
-rw-r--r--test/automated/stream-tests.el4
2 files changed, 5 insertions, 7 deletions
diff --git a/lisp/emacs-lisp/stream.el b/lisp/emacs-lisp/stream.el
index 0cf3e939015..eed436a58b4 100644
--- a/lisp/emacs-lisp/stream.el
+++ b/lisp/emacs-lisp/stream.el
@@ -183,13 +183,11 @@ If START is nil, it defaults to 0. If STEP is nil, it defaults to
range is infinite."
(unless start (setq start 0))
(unless step (setq step 1))
- (cond
- ((equal start end) (stream-empty))
- ((and end (> start end)) (error "Invalid range boundaries"))
- (t
+ (if (equal start end)
+ (stream-empty)
(stream-cons
start
- (stream-range (+ start step) end step)))))
+ (stream-range (+ start step) end step))))
(defun stream-seq (seq)
"Return a stream built from the sequence SEQ.
diff --git a/test/automated/stream-tests.el b/test/automated/stream-tests.el
index a7634106e4f..59a0770301c 100644
--- a/test/automated/stream-tests.el
+++ b/test/automated/stream-tests.el
@@ -103,11 +103,11 @@
(ert-deftest stream-range-test ()
(should (stream-empty-p (stream-range 0 0)))
(should (stream-empty-p (stream-range 3 3)))
- (should-error (stream-range 3 2))
(should (= 0 (stream-first (stream-range 0 6 2))))
(should (= 2 (stream-first (stream-rest (stream-range 0 6 2)))))
(should (= 4 (stream-first (stream-rest (stream-rest (stream-range 0 6 2))))))
- (should (stream-empty-p (stream-rest (stream-rest (stream-rest (stream-range 0 6 2)))))))
+ (should (stream-empty-p (stream-rest (stream-rest (stream-rest (stream-range 0 6 2))))))
+ (should (= -4 (stream-first (stream-rest (stream-rest (stream-range 0 nil -2)))))))
(ert-deftest stream-list-test ()
(dolist (list '(nil '(1 2 3) '(a . b)))