mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-04-28 04:10:47 -07:00
When defining a class that has a parent with a forward reference, we can not call finalize-inheritance (A. Gavrilov)
(defclass foo (bar) ()) (defclass baz (foo) ())
This commit is contained in:
parent
9983c3b7ad
commit
801fb69069
1 changed files with 7 additions and 1 deletions
|
|
@ -143,8 +143,14 @@
|
|||
(defmethod effective-slot-definition-class ((class T) &rest canonicalized-slot)
|
||||
(find-class 'standard-effective-slot-definition nil))
|
||||
|
||||
(defun has-forward-referenced-parents (class)
|
||||
(or (forward-referenced-class-p class)
|
||||
(and (not (class-finalized-p class))
|
||||
(some #'has-forward-referenced-parents
|
||||
(class-direct-superclasses class)))))
|
||||
|
||||
(defun finalize-unless-forward (class)
|
||||
(unless (find-if #'forward-referenced-class-p (class-direct-superclasses class))
|
||||
(unless (find-if #'has-forward-referenced-parents (class-direct-superclasses class))
|
||||
(finalize-inheritance class)))
|
||||
|
||||
(defmethod initialize-instance ((class class) &rest initargs
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue