- (unless (has-arglist-info-p fun)
- (error "~%Function ~A (~A) has no argument-list information available, ~%~
- and is probably byte-compiled.~%" ext-sym fun))))))
+ (cond ((macro-function ext-sym)
+ ;; FIXME: Macro functions should have their argument list
+ ;; information checked separately. Just feeding them into
+ ;; the ordinary-function logic below doesn't work right,
+ ;; though, and I haven't figured out what does work
+ ;; right. For now we just punt.
+ (values))
+ #+nil
+ ((sb-int:info :function :accessor-for ext-sym)
+ (values))
+ ((typep fun 'generic-function)
+ ;; FIXME: Check the argument lists of generic functions,
+ ;; instead of just punting like this. (DESCRIBE seems
+ ;; to know how to do it, at least for #'DOCUMENTATION.)
+ (values))
+ (;; FIXME: CONDITION slot accessors (e.g.
+ ;; PRINT-NOT-READABLE-OBJECT) fall into this category.
+ ;; They seem to have argument lists -- since at least
+ ;; DESCRIBE knows how to find them -- but I have
+ ;; neither reverse engineered how it's finding them,
+ ;; nor factored that into a function which can be
+ ;; shared with the logic here..
+ (= (sb-kernel:get-type fun) sb-vm:closure-header-type)
+ (values)) ; ..so for now we just punt.
+ (t
+ (let ((fun (symbol-function ext-sym)))
+ (unless (has-arglist-info-p fun)
+ (error "Function ~A has no arg-list information available."
+ ext-sym)))))))))