--- orig/asdf.lisp Sat Jun 1 21:47:29 2002 +++ src/asdf.lisp Wed Jun 19 18:05:26 2002 @@ -612,12 +612,14 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; syntax +(defun remove-keyword (key arglist) + (loop for sublist = arglist then rest until (null sublist) + for (elt arg . rest) = sublist + unless (eq key elt) append (list elt arg))) + (defmacro defsystem (name &body options) (destructuring-bind (&key pathname (class 'system) &allow-other-keys) options - (let ((component-options - (if (member :class options) - (remove :class options) - options))) + (let ((component-options (remove-keyword :class options))) `(progn ;; system must be registered before we parse the body, otherwise ;; we recur when trying to find an existing system of the same name