chiark / gitweb /
src/class-finalize-*.lisp: Improve finalization error reporting.
[sod] / src / builtin.lisp
index 0787b8dec7ccee1ef79a47a86899f4172e1bcfbb..4d5b5cdccfdddf301ec0adddffcda805bce14e3d 100644 (file)
@@ -297,17 +297,15 @@ (defmethod sod-message-effective-method-class
 (defmethod method-keyword-argument-lists
     ((method initialization-effective-method) direct-methods)
   (append (call-next-method)
-         (delete-duplicates
-          (mapcan (lambda (class)
-                    (let ((initargs (sod-class-initargs class)))
-                      (and initargs
-                           (list (cons (mapcar #'sod-initarg-argument
-                                               initargs)
-                                       (format nil "initargs for ~A"
-                                               class))))))
-                  (sod-class-precedence-list
-                   (effective-method-class method)))
-          :key #'argument-name)))
+         (mapcan (lambda (class)
+                   (let ((initargs (sod-class-initargs class)))
+                     (and initargs
+                          (list (cons (mapcar #'sod-initarg-argument
+                                              initargs)
+                                      (format nil "initargs for ~A"
+                                              class))))))
+                 (sod-class-precedence-list
+                  (effective-method-class method)))))
 
 (defmethod lifecycle-method-kernel
     ((method initialization-effective-method) codegen target)
@@ -541,11 +539,12 @@ (defun bootstrap-classes (module)
 
     ;; Done.
     (dolist (class classes)
-      (finalize-sod-class class)
+      (unless (finalize-sod-class class)
+       (error "Failed to finalize built-in class"))
       (add-to-module module class))))
 
 (export '*builtin-module*)
-(defvar *builtin-module* nil
+(defvar-unbound *builtin-module*
   "The builtin module.")
 
 (export 'make-builtin-module)
@@ -564,8 +563,6 @@ (defun make-builtin-module ()
                                                    :case :common)
                               :state nil)))
     (with-module-environment (module)
-      (dolist (name '("va_list" "size_t" "ptrdiff_t" "wchar_t"))
-       (add-to-module module (make-instance 'type-item :name name)))
       (flet ((header-name (name)
               (concatenate 'string "\"" (string-downcase name) ".h\""))
             (add-includes (reason &rest names)
@@ -584,6 +581,6 @@ (defun make-builtin-module ()
     (setf *builtin-module* module)))
 
 (define-clear-the-decks builtin-module
-  (unless *builtin-module* (make-builtin-module)))
+  (unless (boundp '*builtin-module*) (make-builtin-module)))
 
 ;;;----- That's all, folks --------------------------------------------------