From: William Harold Newman Date: Thu, 7 Nov 2002 12:53:37 +0000 (+0000) Subject: 0.7.9.34: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=c3d4cd43d7cd8e0495dbb9c11fd9c121ea069a45;p=sbcl.git 0.7.9.34: 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 --- diff --git a/BUGS b/BUGS index 336ebd9..e1e6c12 100644 --- 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-#: diff --git a/src/code/loop.lisp b/src/code/loop.lisp index 93132de..5cc3347 100644 --- a/src/code/loop.lisp +++ b/src/code/loop.lisp @@ -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)) diff --git a/tests/loop.pure.lisp b/tests/loop.pure.lisp index 222f418..5275cc4 100644 --- a/tests/loop.pure.lisp +++ b/tests/loop.pure.lisp @@ -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))) diff --git a/version.lisp-expr b/version.lisp-expr index ac595bf..835ec69 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"