mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-18 23:32:17 -08:00
clos: finalize-inheritance conformance fix
According to "Reinitialization of Class Metaobjects" reinitialize-instance must call finalize-inheritance if the class was already finalized.
This commit is contained in:
parent
2d5da9e8bf
commit
5cb67471fd
1 changed files with 6 additions and 4 deletions
|
|
@ -211,10 +211,12 @@
|
|||
(dolist (l (setf (class-direct-superclasses class)
|
||||
direct-superclasses))
|
||||
(add-direct-subclass l class)))
|
||||
;; if there are no forward references, we can just finalize the class here
|
||||
(setf (class-finalized-p class) nil)
|
||||
(finalize-unless-forward class)
|
||||
|
||||
;; Per "Reinitialization of Class Metaobjects" we must finalize the
|
||||
;; inheritance here. Note that this means that already finalized class can't
|
||||
;; be reinitialized to have a forward-referenced-class as a superclass.
|
||||
(if (class-finalized-p class)
|
||||
(finalize-inheritance class)
|
||||
(finalize-unless-forward class))
|
||||
class)
|
||||
|
||||
(defun slot-definitions-compatible-p (old-slotds new-slotds)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue