
When used with Clozure, the #'operator-arglist slimefun incorrectly does not return NIL for unbound functions: (fboundp 'cl::bogus) => NIL (swank:operator-arglist "BOGUS" "COMMON-LISP") => "(BOGUS )" The interface function #'arglist (called by #'swank:operator-arglist) is documented to return "the :not-available keyword if the arglist cannot be determined". However: (swank::arglist 'cl::bogus) => NIL The fix is to make the arglist function of the Clozure backend return :not-available when there is no binding: diff -u slime-2009-06-29/swank-openmcl.lisp patch/swank-openmcl.lisp --- slime-2009-06-29/swank-openmcl.lisp 2009-06-29 00:15:06.000000000 -0700 +++ patch/swank-openmcl.lisp 2009-06-29 15:04:51.000000000 -0700 @@ -206,7 +206,11 @@ ;;; Arglist (defimplementation arglist (fname) - (arglist% fname)) + (multiple-value-bind (arglist binding) + (arglist% fname) + (if binding + arglist + :not-available))) (defmethod arglist% ((f symbol)) (ccl:arglist f)) -- Terje Norderhaug