(in-package "SPECIALIZABLE")
(defclass extended-specializer (sb-mop:specializer)
+ ;; FIXME: this doesn't actually do quite what I wanted.
((direct-methods-table :allocation :class
:initform nil :accessor direct-methods-table)))
args))))
(defun compute-effective-method-function (gf methods)
- (let* ((mc (sb-mop:generic-function-method-combination gf))
- (sb-pcl::*applicable-methods* methods)
- (em (sb-mop:compute-effective-method gf mc methods)))
- (sb-pcl::make-effective-method-function gf em)))
+ (if (null methods)
+ (lambda (&rest args) (apply #'no-applicable-method gf args))
+ (let* ((mc (sb-mop:generic-function-method-combination gf))
+ (sb-pcl::*applicable-methods* methods)
+ (em (sb-mop:compute-effective-method gf mc methods)))
+ (sb-pcl::make-effective-method-function gf em))))
;; new, not in closette
(defgeneric generalizer-of-using-class (generic-function object))