[armedbear-ticket] [armedbear] #280: Additional slots in function classes screw up std-compute-discriminating-function

armedbear armedbear-devel at common-lisp.net
Sun Dec 9 18:02:58 UTC 2012


#280: Additional slots in function classes screw up std-compute-discriminating-
function
-----------------------+----------------------------------------------------
 Reporter:  rschlatte  |       Owner:  rschlatte
     Type:  defect     |      Status:  new      
 Priority:  major      |   Milestone:           
Component:  (A)MOP     |     Version:           
 Keywords:             |  
-----------------------+----------------------------------------------------
 Report by Pascal Costanza

 Here is a test case:
 {{{
 CL-USER(1): (use-package :mop)
 T
 CL-USER(2): (defclass my-function (standard-generic-function)
              ((a-slot :initarg :a-slot :accessor a-slot))
              (:metaclass funcallable-standard-class))
 #<FUNCALLABLE-STANDARD-CLASS MY-FUNCTION {24DF7EA4}>
 CL-USER(3): (defgeneric test (x y z)
              (:generic-function-class my-function))
 #<THREAD "interpreter" {14BAAEA8}>: Debugger invoked on condition of type
 TYPE-ERROR
  The value TEST is not of type LIST.
 }}}

 The reason is that std-compute-discriminating-function is also called for
 subclasses of standard-generic-function that don't override compute-
 discriminating function. The specialization in std-compute-discriminating-
 function should only occur if the passed function is _extactly_ a
 standard-generic-function (or if it doesn't add any slots on top of
 standard-generic-function).

 By the way, we're getting closer (ha!). More and more test cases in my
 test suites work. I'm pretty confident that I can add full support for
 ABCL in Closer to MOP for the next version of ABCL.

-- 
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/280>
armedbear <http://common-lisp.net/project/armedbear>
armedbear


More information about the armedbear-ticket mailing list