X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/d145f6df86aca5c0b520f300ce8821e762a9707b..8922d11064c215cdd8b6288985cc6d2e573826c2:/src/class-make-impl.lisp diff --git a/src/class-make-impl.lisp b/src/class-make-impl.lisp index 28c1958..f9d5734 100644 --- a/src/class-make-impl.lisp +++ b/src/class-make-impl.lisp @@ -87,7 +87,8 @@ :location (file-location location) :pset pset))) (with-slots (slots) class - (setf slots (append slots (list slot))))))) + (setf slots (append slots (list slot)))) + slot))) (defmethod shared-initialize :after ((slot sod-slot) slot-names &key pset) "This method does nothing. @@ -111,7 +112,8 @@ (file-location location)))) (with-slots (instance-initializers) class (setf instance-initializers - (append instance-initializers (list initializer))))))) + (append instance-initializers (list initializer)))) + initializer))) (defmethod make-sod-class-initializer ((class sod-class) nick name value-kind value-form pset @@ -124,7 +126,8 @@ (file-location location)))) (with-slots (class-initializers) class (setf class-initializers - (append class-initializers (list initializer))))))) + (append class-initializers (list initializer)))) + initializer))) (defmethod make-sod-initializer-using-slot ((class sod-class) (slot sod-slot) @@ -163,7 +166,8 @@ :location (file-location location) :pset pset))) (with-slots (messages) class - (setf messages (append messages (list message))))))) + (setf messages (append messages (list message)))) + message))) (defmethod shared-initialize :after ((message sod-message) slot-names &key pset) @@ -188,7 +192,8 @@ type body pset (file-location location)))) (with-slots (methods) class - (setf methods (append methods (list method))))))) + (setf methods (append methods (list method)))) + method))) (defmethod make-sod-method-using-message ((message sod-message) (class sod-class) type body pset location) @@ -214,7 +219,8 @@ (with-slots (body type) method (unless (or (not body) (every (lambda (arg) - (or (argument-name arg) + (or (eq arg :ellipsis) + (argument-name arg) (eq (argument-type arg) (c-type void)))) (c-function-arguments type))) (error "Abstract declarators not permitted in method definitions")))