[slime-devel] [PATCH] arglist for Clozure

Terje Norderhaug terje at in-progress.com
Mon Jun 29 22:19:53 UTC 2009


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










More information about the slime-devel mailing list