0.7.9.34:
authorWilliam Harold Newman <william.newman@airmail.net>
Thu, 7 Nov 2002 12:53:37 +0000 (12:53 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Thu, 7 Nov 2002 12:53:37 +0000 (12:53 +0000)
merged emu LOOP.1.27 patch (sbcl-devel 2002-11-01)
added DOWNTO line analogous to emu's ABOVE line, as per CSR
added another bug report

BUGS
src/code/loop.lisp
tests/loop.pure.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index 336ebd9..e1e6c12 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1288,6 +1288,30 @@ WORKAROUND:
     debugger invoked on condition of type UNBOUND-VARIABLE:
       The variable X is unbound.
 
+223: "(SETF FDEFINITION) and #' semantics broken for wrappers"
+  Although this
+    (defun foo (x)
+      (print x))
+    (defun traced (fn)
+      (lambda (&rest rest)
+        (format t "~&about to call ~S on ~S~%" fn rest)
+        (apply fn rest)
+        (format t "~&returned from ~S~%" fn)))
+    (setf (fdefinition 'foo)
+          (traced #'foo))
+    (foo 11)
+  does what one would expect, this
+    (defun bar (x)
+      (print x))
+    (let ((bar0 #'bar))
+      (setf (fdefinition 'bar)
+       (lambda (&rest rest)
+         (format t "~&about to enter BAR ~S~%" rest)
+         (apply bar0 rest)
+         (format t "~&back from BAR~%"))))
+    (bar 12)
+  recurses endlessly in sbcl-0.7.9.32. (Or it works if #' and 
+  FDEFINITION are replaced by SYMBOL-FUNCTION.)
 
 DEFUNCT CATEGORIES OF BUGS
   IR1-#:
index 93132de..5cc3347 100644 (file)
@@ -1895,8 +1895,10 @@ code to be loaded.
                             (downfrom (loop-for-arithmetic :downfrom))
                             (upfrom (loop-for-arithmetic :upfrom))
                             (below (loop-for-arithmetic :below))
+                             (above (loop-for-arithmetic :above))
                             (to (loop-for-arithmetic :to))
                             (upto (loop-for-arithmetic :upto))
+                            (downto (loop-for-arithmetic :downto))
                             (by (loop-for-arithmetic :by))
                             (being (loop-for-being)))
             :iteration-keywords '((for (loop-do-for))
index 222f418..5275cc4 100644 (file)
@@ -64,3 +64,6 @@
                                       (loop for (a . a) in '((1 . 2) (3 . 4))
                                             return a)))))
               'program-error))
+
+;;; similar to gcl/ansi-test LOOP.1.27, and fixed at the same time:
+(assert (equal (loop for x downto 7 by 2 from 13 collect x) '(13 11 9 7)))
index ac595bf..835ec69 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.9.33"
+"0.7.9.34"