X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/6ee1970906d33f0b1b2be20e2f8a4521a6ca514f..9e91c8e7b5fcdeb6389ac7ccbcd9c77348c4493a:/src/pset-proto.lisp diff --git a/src/pset-proto.lisp b/src/pset-proto.lisp index e16e04c..61793b5 100644 --- a/src/pset-proto.lisp +++ b/src/pset-proto.lisp @@ -317,7 +317,8 @@ 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." @@ -333,7 +334,8 @@ (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 --------------------------------------------------