chiark / gitweb /
Major effort to plug slot-name leaks.
[sod] / src / method-impl.lisp
index c5785a26f80774f05efd4bf79d1c4950f624d6f9..4a8249bb8a03aa03eb4472f190308b53cdacf69e 100644 (file)
@@ -138,7 +138,7 @@ (defmethod slot-unbound
                       . (c-function-arguments type))))))
 
 (defmethod sod-method-function-name ((method basic-direct-method))
-  (with-slots (class role message) method
+  (with-slots ((class %class) role message) method
     (format nil "~A__~@[~(~A~)_~]method_~A__~A" class role
            (sod-class-nickname (sod-message-class message))
            (sod-message-name message))))
@@ -159,7 +159,7 @@ (defclass daemon-direct-method (basic-direct-method)
 (defmethod check-method-type ((method daemon-direct-method)
                              (message sod-message)
                              (type c-function-type))
-  (with-slots ((msgtype type)) message
+  (with-slots ((msgtype %type)) message
     (unless (c-type-equal-p (c-type-subtype type) (c-type void))
       (error "Method return type ~A must be `void'" (c-type-subtype type)))
     (unless (argument-lists-compatible-p (c-function-arguments msgtype)
@@ -323,7 +323,8 @@ (defun basic-effective-method-body (codegen target method body)
    returned by the outermost `around' method -- or, if there are none,
    delivered by the BODY -- is finally delivered to the TARGET."
 
-  (with-slots (message class before-methods after-methods around-methods)
+  (with-slots (message (class %class)
+              before-methods after-methods around-methods)
       method
     (let* ((message-type (sod-message-type message))
           (return-type (c-type-subtype message-type))