;; Local functions inhibit global SETF methods.
((and environment
(let ((name (car form)))
- (dolist (x (sb!c::lexenv-functions environment))
+ (dolist (x (sb!c::lexenv-funs environment))
(when (and (eq (car x) name)
(not (sb!c::defined-fun-p (cdr x))))
(return t)))))
`(funcall #'(setf ,(car form)))
t))))
-(defun get-setf-method-inverse (form inverse setf-function)
+(defun get-setf-method-inverse (form inverse setf-fun)
(let ((new-var (gensym))
(vars nil)
(vals nil))
(push x vals))
(setq vals (nreverse vals))
(values vars vals (list new-var)
- (if setf-function
+ (if setf-fun
`(,@inverse ,new-var ,@vars)
`(,@inverse ,@vars ,new-var))
`(,(car form) ,@vars))))
`(let* ,(nreverse bindlist) ,@(nreverse storelist) ,resultvar))
(multiple-value-bind (sm1 sm2 sm3 sm4 sm5)
(get-setf-method (first arglist) env)
- (mapc #'(lambda (var val)
- (push `(,var ,val) bindlist))
+ (mapc (lambda (var val)
+ (push `(,var ,val) bindlist))
sm1
sm2)
(push `(,lastvar ,sm5) bindlist)
((not (fboundp `(setf ,name)))
;; All is well, we don't need any warnings.
(values))
- ((info :function :accessor-for name)
- (warn "defining SETF macro for DEFSTRUCT slot ~
- accessor; redefining as a normal function: ~S"
- name)
- (proclaim-as-fun-name name))
((not (eq (symbol-package name) (symbol-package 'aref)))
(style-warn "defining setf macro for ~S when ~S is fbound"
name `(setf ,name))))
`(eval-when (:compile-toplevel :load-toplevel :execute)
(assign-setf-macro
',access-fn
- #'(lambda (,access-form-var ,env-var)
- (declare (ignore ,env-var))
- (%defsetf ,access-form-var ,(length store-variables)
- #'(lambda (,arglist-var)
- ,@local-decs
- (block ,access-fn
- ,body))))
+ (lambda (,access-form-var ,env-var)
+ (declare (ignore ,env-var))
+ (%defsetf ,access-form-var ,(length store-variables)
+ (lambda (,arglist-var)
+ ,@local-decs
+ (block ,access-fn
+ ,body))))
nil
',doc))))))
(t
:environment environment)
`(eval-when (:compile-toplevel :load-toplevel :execute)
(assign-setf-macro ',access-fn
- #'(lambda (,whole ,environment)
- ,@local-decs
- (block ,access-fn ,body))
+ (lambda (,whole ,environment)
+ ,@local-decs
+ (block ,access-fn ,body))
nil
',doc)))))