lib/: Pure C machinery for handling `keyword arguments' to functions.
[sod] / src / pset-proto.lisp
index e16e04c..61793b5 100644 (file)
    We initialize SLOT in INSTANCE.  In full: if PSET contains a property
    called NAME, then convert it to TYPE, bind the value to PVAR and evaluate
    CONVERT-FORMS -- these default to just using the property value.  If
-   there's no property, and the slot is named in SLOT-NAMES and currently
+   there's no property, and DEFAULT-FORMS contains at least one non-
+   declaration form, and the slot is named in SLOT-NAMES and currently
    unbound, then evaluate DEFAULT-FORMS and use their value to compute the
    slot value."
 
               (setf (slot-value ,instance ,slot)
                     (with-default-error-location (,floc)
                       ,@(or convert-forms `(,pvar))))
-              (default-slot (,instance ,slot ,slot-names)
-                ,@body)))))))
+              ,@(and body
+                     `((default-slot (,instance ,slot ,slot-names)
+                         ,@body)))))))))
 
 ;;;----- That's all, folks --------------------------------------------------