X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Flate-extensions.lisp;h=4c67532b555179c87014d17cb10bba95689cf0b2;hb=2d0b882f9eabffe5e2d32c0e2e7ab06c96f4fea3;hp=afd2191efa01e6836a3026e95b8830468758f6c4;hpb=e5f24ebc38e38c986df830fd1e4035d16bea4e5c;p=sbcl.git diff --git a/src/code/late-extensions.lisp b/src/code/late-extensions.lisp index afd2191..4c67532 100644 --- a/src/code/late-extensions.lisp +++ b/src/code/late-extensions.lisp @@ -25,38 +25,26 @@ (error "unknown operator in feature expression: ~S." x))) (not (null (memq x *features*))))) -;;; KLUDGE: This is a wrapper around stale code for working with floating point -;;; infinities. I believe that I will eventually eliminate floating point -;;; infinities from the code, since they're a pain to cross-compile, since they -;;; significantly increase the number of conditions which need to be tested in -;;; numeric functions, and since the benefits which they provide (which are -;;; admittedly significant) are unfortunately not portable. I haven't actually -;;; done the dirty deed yet, though, and until then, I've wrapped various -;;; infinity-returning forms in this macro. -- WHN 1999 -(defmacro infinite (x) - (declare (ignorable x)) - #!-sb-infinities '(error 'floating-point-overflow) - #!+sb-infinities x) - ;;; Given a list of keyword substitutions `(,OLD ,NEW), and a -;;; keyword-argument-list-style list of alternating keywords and arbitrary -;;; values, return a new keyword-argument-list-style list with all -;;; substitutions applied to it. +;;; &KEY-argument-list-style list of alternating keywords and +;;; arbitrary values, return a new &KEY-argument-list-style list with +;;; all substitutions applied to it. ;;; -;;; Note: If efficiency mattered, we could do less consing. (But if efficiency -;;; mattered, why would we be using keyword arguments at all, much less -;;; renaming keyword arguments?) +;;; Note: If efficiency mattered, we could do less consing. (But if +;;; efficiency mattered, why would we be using &KEY arguments at +;;; all, much less renaming &KEY arguments?) ;;; ;;; KLUDGE: It would probably be good to get rid of this. -- WHN 19991201 -(defun rename-keyword-args (rename-list keyword-args) - (declare (type list rename-list keyword-args)) +(defun rename-key-args (rename-list key-args) + (declare (type list rename-list key-args)) ;; Walk through RENAME-LIST modifying RESULT as per each element in ;; RENAME-LIST. - (do ((result (copy-list keyword-args))) ; may be modified below + (do ((result (copy-list key-args))) ; may be modified below ((null rename-list) result) (destructuring-bind (old new) (pop rename-list) - (declare (type keyword old new)) - ;; Walk through RESULT renaming any OLD keyword argument to NEW. + ;; ANSI says &KEY arg names aren't necessarily KEYWORDs. + (declare (type symbol old new)) + ;; Walk through RESULT renaming any OLD key argument to NEW. (do ((in-result result (cddr in-result))) ((null in-result)) (declare (type list in-result)) @@ -82,7 +70,7 @@ ;; workaround for broken READ-SEQUENCE #+no-ansi-read-sequence (progn - (assert (<= start end)) + (aver (<= start end)) (let ((etype (stream-element-type stream))) (cond ((equal etype '(unsigned-byte 8)) (do ((i start (1+ i)))