chiark
/
gitweb
/
~mdw
/
sod
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
doc/sod.tex: Don't print the `Index' header in uppercase.
[sod]
/
src
/
builtin.lisp
diff --git
a/src/builtin.lisp
b/src/builtin.lisp
index c49f263e89ecd37d17950eae3fdbdb660619ea08..73577527281a9372e1df1c9d7b3c73efe76ae9eb 100644
(file)
--- a/
src/builtin.lisp
+++ b/
src/builtin.lisp
@@
-279,7
+279,7
@@
(default (sod-initarg-default initarg)))
(definst suppliedp-struct (stream) (flags var)
(format stream
(definst suppliedp-struct (stream) (flags var)
(format stream
- "~@<struct { ~2I~_~{unsigned ~A
: 1;~^ ~_~} ~I~_} ~A;~:>"
+ "~@<struct { ~2I~_~{unsigned ~A: 1;~^ ~_~} ~I~_} ~A;~:>"
flags var))
;; Initialization.
flags var))
;; Initialization.
@@
-295,15
+295,28
@@
(defmethod sod-message-effective-method-class
'initialization-effective-method)
(defmethod method-keyword-argument-lists
'initialization-effective-method)
(defmethod method-keyword-argument-lists
- ((method initialization-effective-method) direct-methods)
+ ((method initialization-effective-method) direct-methods
state
)
(append (call-next-method)
(mapcan (lambda (class)
(append (call-next-method)
(mapcan (lambda (class)
- (let ((initargs (sod-class-initargs class)))
+ (let* ((initargs (sod-class-initargs class))
+ (map (make-hash-table))
+ (arglist (mapcar
+ (lambda (initarg)
+ (let ((arg (sod-initarg-argument
+ initarg)))
+ (setf (gethash arg map) initarg)
+ arg))
+ initargs)))
(and initargs
(and initargs
- (list (cons (mapcar #'sod-initarg-argument
- initargs)
- (format nil "initargs for ~A"
- class))))))
+ (list (cons (lambda (arg)
+ (info-with-location
+ (gethash arg map)
+ "Type `~A' from initarg ~
+ in class `~A' (here)"
+ (argument-type arg) class)
+ (report-inheritance-path
+ state class))
+ arglist)))))
(sod-class-precedence-list
(effective-method-class method)))))
(sod-class-precedence-list
(effective-method-class method)))))
@@
-539,7
+552,8
@@
(defun bootstrap-classes (module)
;; Done.
(dolist (class classes)
;; 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*)
(add-to-module module class))))
(export '*builtin-module*)