;;; FIND-METHOD-COMBINATION must appear in this file for bootstrapping
;;; reasons.
(defmethod find-method-combination ((generic-function generic-function)
;;; FIND-METHOD-COMBINATION must appear in this file for bootstrapping
;;; reasons.
(defmethod find-method-combination ((generic-function generic-function)
- ',type ',operator ',identity-with-one-arg ',documentation
+ ',type-name ',operator ',identity-with-one-arg ',documentation
args))
:definition-source source-location))
(when old-method
(remove-method #'find-method-combination old-method))
(add-method #'find-method-combination new-method)
args))
:definition-source source-location))
(when old-method
(remove-method #'find-method-combination old-method))
(add-method #'find-method-combination new-method)
(cond ((null options) (setq options '(:most-specific-first)))
((equal options '(:most-specific-first)))
((equal options '(:most-specific-last)))
(cond ((null options) (setq options '(:most-specific-first)))
((equal options '(:most-specific-first)))
((equal options '(:most-specific-last)))
"Illegal options to a short method combination type.~%~
The method combination type ~S accepts one option which~%~
must be either :MOST-SPECIFIC-FIRST or :MOST-SPECIFIC-LAST."
"Illegal options to a short method combination type.~%~
The method combination type ~S accepts one option which~%~
must be either :MOST-SPECIFIC-FIRST or :MOST-SPECIFIC-LAST."
(defmethod compute-effective-method ((generic-function generic-function)
(combin short-method-combination)
applicable-methods)
(defmethod compute-effective-method ((generic-function generic-function)
(combin short-method-combination)
applicable-methods)
(operator (short-combination-operator combin))
(ioa (short-combination-identity-with-one-argument combin))
(order (car (method-combination-options combin)))
(operator (short-combination-operator combin))
(ioa (short-combination-identity-with-one-argument combin))
(order (car (method-combination-options combin)))
short form of DEFINE-METHOD-COMBINATION and so requires~%~
all methods have either the single qualifier ~S or the~%~
single qualifier :AROUND."
short form of DEFINE-METHOD-COMBINATION and so requires~%~
all methods have either the single qualifier ~S or the~%~
single qualifier :AROUND."
(setq gf-var (cadr (pop body))))
(multiple-value-bind (documentation function)
(make-long-method-combination-function
(setq gf-var (cadr (pop body))))
(multiple-value-bind (documentation function)
(make-long-method-combination-function
- `(load-long-defcombin ',type ',documentation #',function
+ `(load-long-defcombin ',type-name ',documentation #',function
',args-option (sb-c:source-location)))))
(defvar *long-method-combination-functions* (make-hash-table :test 'eq))
',args-option (sb-c:source-location)))))
(defvar *long-method-combination-functions* (make-hash-table :test 'eq))
(when old-method (remove-method #'find-method-combination old-method))
(add-method #'find-method-combination new-method)
(when old-method (remove-method #'find-method-combination old-method))
(add-method #'find-method-combination new-method)
(defmethod compute-effective-method ((generic-function generic-function)
(combin long-method-combination)
applicable-methods)
(defmethod compute-effective-method ((generic-function generic-function)
(combin long-method-combination)
applicable-methods)
:format-arguments (list ',name))))
required-checks))
(loop (unless (and (constantp order)
:format-arguments (list ',name))))
required-checks))
(loop (unless (and (constantp order)
(return t)))
(push (cond ((eq order :most-specific-first)
`(setq ,name (nreverse ,name)))
(return t)))
(push (cond ((eq order :most-specific-first)
`(setq ,name (nreverse ,name)))