chiark
/
gitweb
/
~mdw
/
sod
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src/pset-{proto,impl}.lisp: Move `string-to-symbol' to implementation.
[sod]
/
src
/
builtin.lisp
diff --git
a/src/builtin.lisp
b/src/builtin.lisp
index 77eca391e49ea79bbf09e7e14c684274273ac411..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 (format nil "initargs for ~A"
- class)
- (mapcar #'sod-initarg-argument
- initargs))))))
+ (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)))))