X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fearly-setf.lisp;h=b8a15d449191eb3636b3f4e4657cbe9d710168c5;hb=3cfc1f0bc414d2db71de519152d72d479f1f6232;hp=91808a025335489ec68ace90d4023643e46c73d6;hpb=a2654b563a79a7015a39d43a7a7709a538868765;p=sbcl.git diff --git a/src/code/early-setf.lisp b/src/code/early-setf.lisp index 91808a0..b8a15d4 100644 --- a/src/code/early-setf.lisp +++ b/src/code/early-setf.lisp @@ -93,7 +93,7 @@ (cond ((sb!xc:constantp x environment) (push x args)) (t - (let ((temp (gensym "TMP"))) + (let ((temp (gensymify x))) (push temp args) (push temp vars) (push x vals))))) @@ -338,7 +338,8 @@ (eval-when (#-sb-xc :compile-toplevel :load-toplevel :execute) ;;; Assign SETF macro information for NAME, making all appropriate checks. - (defun assign-setf-macro (name expander inverse doc) + (defun assign-setf-macro (name expander expander-lambda-list inverse doc) + #+sb-xc-host (declare (ignore expander-lambda-list)) (with-single-package-locked-error (:symbol name "defining a setf-expander for ~A")) (cond ((gethash name sb!c:*setf-assumed-fboundp*) @@ -354,6 +355,9 @@ (style-warn "defining setf macro for ~S when ~S is fbound" name `(setf ,name)))) (remhash name sb!c:*setf-assumed-fboundp*) + #-sb-xc-host + (when expander + (setf (%fun-lambda-list expander) expander-lambda-list)) ;; FIXME: It's probably possible to join these checks into one form which ;; is appropriate both on the cross-compilation host and on the target. (when (or inverse (info :setf :inverse name)) @@ -372,6 +376,7 @@ `(eval-when (:load-toplevel :compile-toplevel :execute) (assign-setf-macro ',access-fn nil + nil ',(car rest) ,(when (and (car rest) (stringp (cadr rest))) `',(cadr rest))))) @@ -393,6 +398,7 @@ (%defsetf ,access-form ,(length store-variables) (lambda (,whole) ,body))) + ',lambda-list nil ',doc)))))) (t @@ -443,6 +449,7 @@ (lambda (,whole ,environment) ,@local-decs ,body) + ',lambda-list nil ',doc)))))