((:default-default *default-default*))
(error-fun 'error)
(wrap-block t))
+ (unless (listp lambda-list)
+ (bad-type lambda-list 'list "~S lambda-list is not a list: ~S"
+ context lambda-list))
(multiple-value-bind (forms declarations documentation)
(parse-body body :doc-string-allowed doc-string-allowed)
(let ((*arg-tests* ())
:error-fun error-fun
:anonymousp anonymousp)
(values `(let* (,@(nreverse *system-lets*))
+ #-sb-xc-host
+ (declare (muffle-conditions sb!ext:code-deletion-note))
,@(when *ignorable-vars*
`((declare (ignorable ,@*ignorable-vars*))))
,@*arg-tests*
;; Special case compiler-macros: if car of the form is FUNCALL,
;; skip over it for destructuring, pretending cdr of the form is
;; the actual form. Save original for &WHOLE.
- (when (eq context 'define-compiler-macro)
+ (when (and (not sublist) (eq context 'define-compiler-macro))
(push-let-binding compiler-macro-whole whole-var :system t)
(push compiler-macro-whole *ignorable-vars*)
(push-let-binding whole-var whole-var
:maximum ,explicit-maximum))))))
*arg-tests*))
(when key-seen
- (let ((problem (gensym "KEY-PROBLEM-"))
- (info (gensym "INFO-")))
+ (with-unique-names (problem info)
(push `(multiple-value-bind (,problem ,info)
(verify-keywords ,rest-name
',keys