X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/7b118f8a767addd8c869bf83506f48d28dcd7b94..8eb242b160e163a1cfc6e810aeda4788116bba1a:/src/class-layout-impl.lisp diff --git a/src/class-layout-impl.lisp b/src/class-layout-impl.lisp index 119996e..7ff4667 100644 --- a/src/class-layout-impl.lisp +++ b/src/class-layout-impl.lisp @@ -127,14 +127,18 @@ (sod-class-nickname (method-entry-chain-head entry)) (method-entry-role entry)))) +(defmethod sod-message-applicable-methods + ((message sod-message) (class sod-class)) + (mappend (lambda (super) + (remove message + (sod-class-methods super) + :key #'sod-method-message + :test-not #'eql)) + (sod-class-precedence-list class))) + (defmethod compute-sod-effective-method ((message sod-message) (class sod-class)) - (let ((direct-methods (mappend (lambda (super) - (remove message - (sod-class-methods super) - :key #'sod-method-message - :test-not #'eql)) - (sod-class-precedence-list class)))) + (let ((direct-methods (sod-message-applicable-methods message class))) (make-instance (sod-message-effective-method-class message) :message message :class class