[armedbear-devel] defmethod doesn't call add-method

Rudolf Schlatte rudi at constantly.at
Mon Dec 3 07:35:59 UTC 2012


On Dec 2, 2012, at 22:54, Pascal Costanza <pc at p-cos.net> wrote:

> Hi,
> 
> There is a problem that a defmethod may not call add-method as it should. Here is a transcript:
> 
> CL-USER(1): (use-package :mop)
> T
> CL-USER(2): (defclass my-generic-function (standard-generic-function) () (:metaclass funcallable-standard-class))
> #<FUNCALLABLE-STANDARD-CLASS MY-GENERIC-FUNCTION {3606AFA2}>
> CL-USER(3): (defgeneric f (x) (:generic-function-class my-generic-function))
> #<MY-GENERIC-FUNCTION F {589D4D84}>
> CL-USER(4): (defmethod add-method :after ((gf my-generic-function) (m standard-method)) (print :foo))
> #<STANDARD-METHOD ADD-METHOD :AFTER (MY-GENERIC-FUNCTION STANDARD-METHOD) {3F4C428F}>
> CL-USER(5): (defmethod f ((x integer)) (+ x x))
> #<STANDARD-METHOD F (INTEGER) {27A5DAC0}>
> CL-USER(6): (add-method #'f *)
> 
> :FOO 
> #<MY-GENERIC-FUNCTION F {589D4D84}>
> CL-USER(7): (f 5)
> 10
> 
> …or maybe just :after methods on add-method are not called…

Thanks, logged at http://trac.common-lisp.net/armedbear/ticket/276

Rudi





More information about the armedbear-devel mailing list