[armedbear-devel] Wrongly initialized generic function method combination
Rudolf Schlatte
rudi at constantly.at
Mon Aug 13 13:24:58 UTC 2012
On Aug 13, 2012, at 04:25, Stas Boukarev <stassats at gmail.com> wrote:
> When compile a file with
>
> (defgeneric test (a b)
> (:method-combination progn :most-specific-last))
>
> (defmethod test progn (a b)
> (list a b))
>
> TEST receives a wrong method-combination
> (mop:generic-function-method-combination #'test)
> =>
> #<METHOD-COMBINATION STANDARD {6E99175D}>
>
> When defgeneric is called, the generic function TEST is already created
> by the defmethod macro at macroexpansion time, but not completely
> initialized, so defgeneric ends up calling reinitialize-instance with
> :method-combination, but the slot for method-combination is
> called %METHOD-COMBINATION and its initarg is :%METHOD-COMBINATION, so
> nothing gets initialized.
Cool. Adding the proper initarg uncovered bugs in ensure-generic-function-using-class as well.
Should be fixed in #14078.
(The reason for the original commit was that symbols from COMMON-LISP aren't supposed to be used as slot names, which the MOP test suite checks.)
Rudi
More information about the armedbear-devel
mailing list