#280 closed defect (fixed)
Additional slots in function classes screw up std-compute-discriminating-function
Reported by: | rschlatte | Owned by: | rschlatte |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | (A)MOP | Version: | |
Keywords: | Cc: | ||
Parent Tickets: |
Description
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.
Change History (2)
comment:1 Changed 12 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:2 Changed 12 years ago by
Note: See
TracTickets for help on using
tickets.
(In [14342]) Add new slots at the end in inherited classes