projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.4.5 slot reader/writer documentation in the manual
[sbcl.git]
/
src
/
pcl
/
vector.lisp
diff --git
a/src/pcl/vector.lisp
b/src/pcl/vector.lisp
index
549c5e3
..
2b4f2d2
100644
(file)
--- a/
src/pcl/vector.lisp
+++ b/
src/pcl/vector.lisp
@@
-985,12
+985,13
@@
;; The lambda-list used by BIND-ARGS
(bind-list lambda-list)
(setq-p (getf (cdr lmf-params) :setq-p))
;; The lambda-list used by BIND-ARGS
(bind-list lambda-list)
(setq-p (getf (cdr lmf-params) :setq-p))
+ (auxp (member '&aux bind-list))
(call-next-method-p (getf (cdr lmf-params) :call-next-method-p)))
;; Try to use the normal function call machinery instead of BIND-ARGS
(call-next-method-p (getf (cdr lmf-params) :call-next-method-p)))
;; Try to use the normal function call machinery instead of BIND-ARGS
- ;; bindings the arguments, unless:
+ ;; binding the arguments, unless:
(unless (or ;; If all arguments are required, BIND-ARGS will be a no-op
;; in any case.
(unless (or ;; If all arguments are required, BIND-ARGS will be a no-op
;; in any case.
- (not restp)
+ (and (not restp) (not auxp))
;; CALL-NEXT-METHOD wants to use BIND-ARGS, and needs a
;; list of all non-required arguments.
call-next-method-p)
;; CALL-NEXT-METHOD wants to use BIND-ARGS, and needs a
;; list of all non-required arguments.
call-next-method-p)
@@
-1013,7
+1014,9
@@
'.rest-arg.))
(fmf-lambda-list (if rest-arg
(append req-args (list '&rest rest-arg))
'.rest-arg.))
(fmf-lambda-list (if rest-arg
(append req-args (list '&rest rest-arg))
- lambda-list)))
+ (if call-next-method-p
+ req-args
+ lambda-list))))
`(list*
:function
(let* ((fmf (,(if (body-method-name body) 'named-lambda 'lambda)
`(list*
:function
(let* ((fmf (,(if (body-method-name body) 'named-lambda 'lambda)
@@
-1091,11
+1094,7
@@
(method-function nm)
nm)
:call-method-args (list nms)))))
(method-function nm)
nm)
:call-method-args (list nms)))))
- (if restp
- (let* ((rest (nthcdr nreq method-args))
- (args (ldiff method-args rest)))
- (apply fmf pv-cell nmc (nconc args (list rest))))
- (apply fmf pv-cell nmc method-args))))))
+ (apply fmf pv-cell nmc method-args)))))
(defun get-pv-cell (method-args pv-table)
(let ((pv-wrappers (pv-wrappers-from-all-args pv-table method-args)))
(defun get-pv-cell (method-args pv-table)
(let ((pv-wrappers (pv-wrappers-from-all-args pv-table method-args)))