0.6.12.3:
[sbcl.git] / src / compiler / macros.lisp
index 1efe6b2..6fe6325 100644 (file)
 ;;; The second value is a list of all the arguments bound. We make the
 ;;; variables IGNORABLE so that we don't have to manually declare them
 ;;; Ignore if their only purpose is to make the syntax work.
-(declaim (ftype (function (list list symbol t) list) parse-deftransform))
 (defun parse-deftransform (lambda-list body args error-form)
   (multiple-value-bind (req opt restp rest keyp keys allowp)
       (parse-lambda-list lambda-list)
        (dolist (spec keys)
          (if (or (atom spec) (atom (first spec)))
              (let* ((var (if (atom spec) spec (first spec)))
-                    (key (intern (symbol-name var) "KEYWORD")))
+                    (key (keywordicate var)))
                (vars var)
                (binds `(,var (find-keyword-continuation ,n-keys ,key)))
                (keywords key))
                            `(<= ,min-args ,n-length))
                       ,@(when keyp
                           (if allowp
-                              `((check-keywords-constant ,n-keys))
+                              `((check-key-args-constant ,n-keys))
                               `((check-transform-keys ,n-keys ',(keywords))))))
                ,error-form)
              (let ,(binds)
                        ,(if restart-p
                             `(cond
                               ((eq (continuation-block ,cont-var) ,n-block)
-                               (assert (continuation-next ,cont-var))
+                               (aver (continuation-next ,cont-var))
                                (continuation-next ,cont-var))
                               (t
                                (let ((start (block-start ,n-block)))