src/method-impl.lisp: Remove unnecessary `with-slots' form.
[sod] / src / method-impl.lisp
index 09dbb2b..3fd6f08 100644 (file)
@@ -98,6 +98,9 @@
       (call-next-method)
       (primary-method-class message)))
 
+(defmethod primary-method-class ((message simple-message))
+  'basic-direct-method)
+
 ;;;--------------------------------------------------------------------------
 ;;; Direct method classes.
 
                 (dolist (tail chain-tails)
                   (setup-entry tail)
                   (dolist (var vars)
-                    (ensure-var codegen (inst-name var)
-                                (inst-type var) (inst-init var)))
+                    (if (typep var 'var-inst)
+                        (ensure-var codegen (inst-name var)
+                                    (inst-type var) (inst-init var))
+                        (emit-decl codegen var)))
                   (when parm-n (varargs-prologue))
                   (emit-insts codegen insts)
                   (when parm-n (varargs-epilogue))
 
 (defmethod compute-effective-method-body
     ((method simple-effective-method) codegen target)
-  (with-slots (message basic-argument-names primary-methods) method
-    (basic-effective-method-body codegen target method
-                                (lambda (target)
-                                  (simple-method-body method
-                                                      codegen
-                                                      target)))))
+  (basic-effective-method-body codegen target method
+                              (lambda (target)
+                                (simple-method-body method
+                                                    codegen
+                                                    target))))
 
 ;;;--------------------------------------------------------------------------
 ;;; Standard method combination.
 (defclass standard-message (simple-message)
   ()
   (:documentation
-   "Message class for standard method combination.
+   "Message class for standard method combinations.
 
    Standard method combination is a simple method combination where the
    primary methods are invoked as a delegation chain, from most- to