On Sun, Dec 2, 2012 at 9:11 PM, Pascal Costanza <email@example.com> wrote:
OK, I can report a success: All my test cases run through now (almost, see below ;).
1) extract-specializer-names is not correct for eql specializers. Consider: (extract-specializer-names '((s (eql 's)))) => ((EQL S)). However, the result should be ((EQL 'S)), the quote should not be removed!
2) When an accessor method is initialized, it should be passed a :slot-definition argument to the slot it is supposed to access. This doesn't seem to happen.
3) When ADD-METHOD has to remove a method because of agreeing on specializers and qualifiers with the new method, it is specified to do so by invoking REMOVE-METHOD rather than by doing it by itself. However, this doesn't seem to be the case.
4) DEFMETHOD doesn't call MAKE-METHOD-LAMBDA to determine the method function body. [My guess is that this is not easy to change due to the deviation from the MOP specification in how method functions are called.]
5) (setf generic-function-name) is specified to invoke reinitialize-instance to do its job, rather than doing it by itself. However, this doesn't seem to be the case.
6) Many of the metaobject classes expose slots with names that are exported from some package or visible in CL-USER. This shouldn't be the case. (See "Restrictions on Implementations" in the MOP specification.)
[I will skip support for the 12.7.1 because that is too much work and will be only of temporary value.]