When in the IDE you type:
(apply #'foo ... ... ...)
When it autodocs the apply, swank attempts to show the "apply" with foo's params. Pretty impressive; but it didn't have a case for where #'foo's args can't be queried from the underlying lisp. Discovered this in lispworks, which can't give back the args for functions compiled under tightest settings.
The underlying abstraction can return :NOT-AVAILABLE - most of the other cases look for this, the patch below filters out this case so as to not give it special handling. . .
--- original/contrib/swank-arglists.lisp Sun Aug 11 16:49:36 2013 +++ replacement/contrib/swank-arglists.lisp Sat Aug 10 23:27:27 2013 @@ -916,26 +916,27 @@ (let ((function-arglist (compute-enriched-decoded-arglist function-name (cdr argument-forms)))) - (return-from compute-enriched-decoded-arglist - (values - (make-arglist :required-args - (list 'function) - :optional-args - (append - (mapcar #'(lambda (arg) - (make-optional-arg arg nil)) - (arglist.required-args function-arglist)) - (arglist.optional-args function-arglist)) - :key-p - (arglist.key-p function-arglist) - :keyword-args - (arglist.keyword-args function-arglist) - :rest - 'args - :allow-other-keys-p - (arglist.allow-other-keys-p function-arglist)) - (list function-name-form) - t))))))) + (unless (eq function-arglist :NOT-AVAILABLE) + (return-from compute-enriched-decoded-arglist + (values + (make-arglist :required-args + (list 'function) + :optional-args + (append + (mapcar #'(lambda (arg) + (make-optional-arg arg nil)) + (arglist.required-args function-arglist)) + (arglist.optional-args function-arglist)) + :key-p + (arglist.key-p function-arglist) + :keyword-args + (arglist.keyword-args function-arglist) + :rest + 'args + :allow-other-keys-p + (arglist.allow-other-keys-p function-arglist)) + (list function-name-form) + t)))))))) (call-next-method))
(defmethod compute-enriched-decoded-arglist