On Tue, 2005-01-18 at 00:03 +0100, Sverker Wiberg wrote:
> And here is a first patch to correct the bug, with test cases snarfed
> from Steel Bank CL (thanks!). It fails at the dynamic-slot-subclass case
> in tests/mop-2.impure-cload.lisp (when I do the defclass I get "Internal
> error: In get-accessor-method-function."), so I disabled that case. This
> should be fixed as well; but I won't do it today.

And here's a fix for this problem!

When finalizing a class, specializer-applicable-using-type-p (actually
saut-class etc.) calls cpl-or-nil to get the class precedence list;
however, as the class isn't finalized, cpl-or-nil returns nil for "don't
know". which s-a-u-t reads as an empty cpl.

As s-a-u-t runs after compute-class-precedence-list, the class being
finalized has a sane cpl at this point (is this always true?), and the
saut-... functions should rather call cpl-maybe-early instead of
cpl-or-nil.

Which is what the 'diff-2.txt' patch does. Now
tests/mop-2.impure-cload.lisp succeeds.

/Sverker

P.S. 

As I noticed that the list server stripped my previous patch (but it got
through on the news gateway), I'm including it again, as 'diff-1.txt'.



-- Binary/unsupported file stripped by Listar --
-- Type: text/x-patch
-- File: diff-2.txt


-- Binary/unsupported file stripped by Listar --
-- Type: text/x-patch
-- File: diff-1.txt



Reply via email to