[cmucl-imp] Method combination woes

Didier Verna didier at lrde.epita.fr
Mon Jan 29 16:26:40 UTC 2018


  Hello!

It seems that the 2018/02 snapshot of CMUCL doesn't properly handle
method combination updating in generic functions:

CL-USER> (define-method-combination my-min ()
	   ((methods ()))
	   `(min ,@(mapcar #'(lambda (method)
			      `(call-method ,method))
			  methods)))
MY-MIN
CL-USER> (define-method-combination my-max ()
	   ((methods ()))
	   `(max ,@(mapcar #'(lambda (method)
			      `(call-method ,method))
			  methods)))
MY-MAX
CL-USER> (test 0)
5
CL-USER> (reinitialize-instance #'test :method-combination (mop:find-method-combination #'make-instance 'my-max nil))
#<STANDARD-GENERIC-FUNCTION TEST (2) {4AB267B9}>
CL-USER> (test 0)
5

Here, 6 was expected, not 5, and despite the fact that the method
combination slot in the generic function object was correctly updated to
MY-MAX.


Besides, ENSURE-GENERIC-FUNCTION also seems to fail handling
method-combination changes properly:

(ensure-generic-function 'test :method-combination
  (mop:find-method-combination #'make-instance 'my-max nil))

Type-error in KERNEL::OBJECT-NOT-LIST-ERROR-HANDLER:
   #<Method-Combination MY-MAX NIL
     {49C2D605}> is not of type LIST
   [Condition of type TYPE-ERROR]


Comments?

-- 
Resistance is futile. You will be jazzimilated.

Lisp, Jazz, Aïkido: http://www.didierverna.info


More information about the cmucl-imp mailing list