-(defmethod method-keyword-argument-lists
- ((method effective-method) direct-methods)
- (with-slots (message) method
- (and (keyword-message-p message)
- (cons (cons (c-function-keywords (sod-message-type message))
- (format nil "message ~A (at ~A)"
- message (file-location message)))
- (mapcar (lambda (m)
- (cons (c-function-keywords (sod-method-type m))
- (format nil "method for ~A on ~A (at ~A)"
- message
- (sod-method-class m)
- (file-location m))))
- direct-methods)))))
+(defmethod sod-message-keyword-argument-lists
+ ((message sod-message) (class sod-class) direct-methods state)
+ (and (keyword-message-p message)
+ (cons (cons (lambda (arg)
+ (let ((class (sod-message-class message)))
+ (info-with-location
+ message "Type `~A' declared in message ~
+ definition in `~A' (here)"
+ (argument-type arg) class)
+ (report-inheritance-path state class)))
+ (c-function-keywords (sod-message-type message)))
+ (mapcar (lambda (method)
+ (cons (lambda (arg)
+ (let ((class (sod-method-class method)))
+ (info-with-location
+ method "Type `~A' declared in ~A direct ~
+ method of `~A' (defined here)"
+ (argument-type arg)
+ (sod-method-description method) class)
+ (report-inheritance-path state class)))
+ (c-function-keywords (sod-method-type method))))
+ direct-methods))))
+
+(defmethod sod-message-check-methods
+ ((message sod-message) (class sod-class) direct-methods)
+ (compute-effective-method-keyword-arguments message class direct-methods))