[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