mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-16 22:32:05 -08:00
Builtin in classes are now also created in boot.lsp
This commit is contained in:
parent
add4b1bb29
commit
632e208a5c
2 changed files with 14 additions and 13 deletions
|
|
@ -106,8 +106,9 @@
|
|||
collect (canonical-slot-to-direct-slot nil s))))
|
||||
(eval-when (eval)
|
||||
(defconstant +class-hierarchy+
|
||||
'((standard-class) ; Special-cased below
|
||||
`((standard-class) ; Special-cased below
|
||||
(t
|
||||
:index 0
|
||||
:metaclass standard-class)
|
||||
(standard-object
|
||||
:metaclass standard-class
|
||||
|
|
@ -151,7 +152,13 @@
|
|||
(funcallable-standard-class
|
||||
:metaclass standard-class
|
||||
:direct-superclasses (std-class)
|
||||
:direct-slots #1#))))
|
||||
:direct-slots #1#)
|
||||
,@(loop for (name . rest) in +builtin-classes-list+
|
||||
for index from 1
|
||||
collect (list name :metaclass 'built-in-class
|
||||
:index index
|
||||
:direct-superclasses (or rest '(t))))
|
||||
)))
|
||||
|
||||
;;; ----------------------------------------------------------------------
|
||||
;;; Building the classes T, CLASS, STANDARD-OBJECT and STANDARD-CLASS.
|
||||
|
|
|
|||
|
|
@ -22,17 +22,11 @@
|
|||
(declare (ignore initargs))
|
||||
(error "The built-in class (~A) cannot be instantiated" class))
|
||||
|
||||
(loop for (name . rest) in '#.+builtin-classes-list+
|
||||
for index from 1
|
||||
with built-in-class = (find-class 'built-in-class)
|
||||
with array = +builtin-classes-pre-array+
|
||||
do (let* ((direct-superclasses (mapcar #'find-class (or rest '(t))))
|
||||
(class (make-instance built-in-class :name name
|
||||
:direct-superclasses direct-superclasses
|
||||
:direct-slots nil)))
|
||||
(setf (find-class name) class
|
||||
(aref array index) class))
|
||||
finally (si::*make-constant '+builtin-classes+ array))
|
||||
;;;
|
||||
;;; At this point we can activate the vector of builtin classes, which
|
||||
;;; is used by class-of and other functions.
|
||||
;;;
|
||||
(si::*make-constant '+builtin-classes+ +builtin-classes-pre-array+)
|
||||
|
||||
(defmethod ensure-class-using-class ((class null) name &rest rest)
|
||||
(declare (ignore class))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue