0.7.8.43:
authorChristophe Rhodes <csr21@cam.ac.uk>
Thu, 17 Oct 2002 14:15:24 +0000 (14:15 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Thu, 17 Oct 2002 14:15:24 +0000 (14:15 +0000)
        Merge Gerd Moellmann's fix for Entomotomy bug
                remove-malfunctions-with-start-end-and-from-end
                (from cmucl-imp 2002-10-12)
... add a skeletal test file, too

src/code/seq.lisp
tests/seq.pure.lisp [new file with mode: 0644]
version.lisp-expr

index 8d09e37..e602e10 100644 (file)
   `(let* ((sequence ,(if reverse?
                         '(reverse (the list sequence))
                         'sequence))
+         (%start ,(if reverse? '(- length end) 'start))
+         (%end ,(if reverse? '(- length start) 'end))
          (splice (list nil))
          (results (do ((index 0 (1+ index))
                        (before-start splice))
-                      ((= index (the fixnum start)) before-start)
+                      ((= index (the fixnum %start)) before-start)
                     (declare (fixnum index))
                     (setq splice
                           (cdr (rplacd splice (list (pop sequence))))))))
-     (do ((index start (1+ index))
+     (do ((index %start (1+ index))
          (this-element)
          (number-zapped 0))
-        ((or (= index (the fixnum end)) (= number-zapped (the fixnum count)))
+        ((or (= index (the fixnum %end)) (= number-zapped (the fixnum count)))
          (do ((index index (1+ index)))
              ((null sequence)
               ,(if reverse?
diff --git a/tests/seq.pure.lisp b/tests/seq.pure.lisp
new file mode 100644 (file)
index 0000000..0ca3b1f
--- /dev/null
@@ -0,0 +1,20 @@
+;;;; tests related to sequences
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; While most of SBCL is derived from the CMU CL system, the test
+;;;; files (like this one) were written from scratch after the fork
+;;;; from CMU CL.
+;;;; 
+;;;; This software is in the public domain and is provided with
+;;;; absolutely no warranty. See the COPYING and CREDITS files for
+;;;; more information.
+
+(let* ((orig '(1 2 3 2 6 1 2 4 1 3 2 7))
+       (x (copy-seq orig))
+       (y (remove 3 x :from-end t :start 1 :end 5))
+       (z (remove 2 x :from-end t :start 1 :end 5)))
+  (assert (equalp orig x))
+  (assert (equalp y '(1 2 2 6 1 2 4 1 3 2 7)))
+  (assert (equalp z '(1 3 6 1 2 4 1 3 2 7))))
index c688b7e..ce592d3 100644 (file)
@@ -18,4 +18,4 @@
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.7.8.42"
+"0.7.8.43"