diff options
| -rw-r--r-- | lisp/emacs-lisp/stream.el | 8 | ||||
| -rw-r--r-- | test/automated/stream-tests.el | 4 |
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))) |
