COMPILE was defined as
(name &optional (definition (or (macro-function name) (fdefinition name))))
The call to macro-function caused an error when called on '(setf x).
Change it to
(or (and (symbolp name) (macro-function name))
(fdefinition name))
Reported by Douglas Katzman.
from the same location. (patch by Douglas Katzman, lp#1042405)
* bug fix: Create vectors of proper internal length when reading literal
vectors from FASLs. (Reported by Jan Moringen)
+ * bug fix: COMPILE can now succefully compile setf functions.
+ (Reported by Douglas Katzman)
changes in sbcl-1.1.12 relative to sbcl-1.1.11:
* enhancement: Add sb-bsd-sockets:socket-shutdown, for calling
(t
(values compiled-definition warnings-p failure-p)))))
-(defun compile (name &optional (definition (or (macro-function name)
+(defun compile (name &optional (definition (or (and (symbolp name)
+ (macro-function name))
(fdefinition name))))
#!+sb-doc
"Produce a compiled function from DEFINITION. If DEFINITION is a
(defun (setf test-984) ())
nil)
(style-warning () t))))
+
+(with-test (:name :compile-setf-function)
+ (defun (setf compile-setf) ())
+ (assert (equal (compile '(setf compile-setf))
+ '(setf compile-setf))))
+
\f
;;;; tests not in the problem domain, but of the consistency of the
;;;; compiler machinery itself