[cldoc-devel] Fix for cludg.lisp / find-qualifiers-and-lambda-list
Joshua TAYLOR
tayloj at cs.rpi.edu
Thu Aug 5 18:22:51 UTC 2010
The current implementation of find-qualifiers-and-lambda-list,
(defun find-qualifiers-and-lambda-list (forms)
"Returns the list of qualifiers if any and the arguments lambda-list."
(loop for form in forms
if (keywordp form) collect form into qualifiers
else do (loop-finish)
finally (return (values qualifiers form))))
doesn't work for non-keyword qualifiers, such as are present for
methods with a non-standard method combination. The syntax for
defmethod is such that rather than checking for keywords, checking for
lists work.
defmethod function-name {method-qualifier}* specialized-lambda-list
[[declaration* | documentation]] form*
method-qualifier::= non-list
Here's a version of find-qualifiers-and-lambda-list that handles the
general case of method-qualifiers:
(defun find-qualifiers-and-lambda-list (forms)
"Returns the list of qualifiers if any and the arguments lambda-list."
(do ((qualifiers '() (list* (first forms) qualifiers))
(forms forms (rest forms)))
((listp (first forms))
(values (nreverse qualifiers) (first forms)))))
--
Joshua Taylor, http://www.cs.rpi.edu/~tayloj/
More information about the cldoc-devel
mailing list