src/pset-parse.lisp: Export the `parse-property' function.
[sod] / src / method-aggregate.lisp
index c8791af..cec6f14 100644 (file)
   (let ((wanted (aggregating-message-method-return-type
                 message (sod-message-combination message)))
        (msgtype (sod-message-type message)))
-    (unless (c-type-equal-p (c-type-subtype type) wanted)
-      (error "Method return type ~A doesn't match message ~A"
-             (c-type-subtype msgtype) (c-type-subtype type)))
-    (unless (argument-lists-compatible-p (c-function-arguments msgtype)
-                                        (c-function-arguments type))
-      (error "Method arguments ~A don't match message ~A" type msgtype))))
+    (check-method-return-type type wanted)
+    (check-method-argument-lists type msgtype)))
 
 ;;;--------------------------------------------------------------------------
 ;;; Utilities.
   :methods (lambda (invoke)
             (funcall invoke val)
             (emit-inst codegen (make-if-inst (format nil "~A > ~A" acc val)
-                                             (make-set-inst acc val) nil))))
+                                             (make-set-inst acc val)))))
 
 (define-aggregating-method-combination :max ((acc val) :codegen codegen)
   :first-method (lambda (invoke)
   :methods (lambda (invoke)
             (funcall invoke val)
             (emit-inst codegen (make-if-inst (format nil "~A < ~A" acc val)
-                                             (make-set-inst acc val) nil))))
+                                             (make-set-inst acc val)))))
 
 (define-aggregating-method-combination :and ((ret) :codegen codegen)
   :around (lambda (body)
   :methods (lambda (invoke)
             (funcall invoke ret)
             (emit-inst codegen (make-if-inst (format nil "!~A" ret)
-                                             (make-break-inst) nil))))
+                                             (make-break-inst)))))
 
 (define-aggregating-method-combination :or ((ret) :codegen codegen)
   :around (lambda (body)
                       (make-do-while-inst (codegen-pop-block codegen) 0)))
   :methods (lambda (invoke)
             (funcall invoke ret)
-            (emit-inst codegen (make-if-inst ret (make-break-inst) nil))))
+            (emit-inst codegen (make-if-inst ret (make-break-inst)))))
 
 ;;;--------------------------------------------------------------------------
 ;;; A customizable aggregating method combination.