X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/f64eb323a5798e155cc494043f5f750abf50a482..2bc73f786f7dc35ecff3e1484a6376aae1de4962:/src/class-make-impl.lisp diff --git a/src/class-make-impl.lisp b/src/class-make-impl.lisp index 7263e44..7495c01 100644 --- a/src/class-make-impl.lisp +++ b/src/class-make-impl.lisp @@ -66,6 +66,8 @@ (default-slot-from-property (class 'chain-link slot-names) (defmethod make-sod-slot ((class sod-class) name type pset &optional location) (with-default-error-location (location) + (when (typep type 'c-function-type) + (error "Slot declarations cannot have function type")) (let ((slot (make-instance (get-property pset :slot-class :symbol 'sod-slot) :class class @@ -144,9 +146,10 @@ (defmethod shared-initialize :after (defmethod make-sod-user-initarg ((class sod-class) name type pset &optional default location) - (declare (ignore pset)) (with-slots (initargs) class - (push (make-instance 'sod-user-initarg :location (file-location location) + (push (make-instance (get-property pset :initarg-class :symbol + 'sod-user-initarg) + :location (file-location location) :class class :name name :type type :default default) initargs))) @@ -157,10 +160,10 @@ (defmethod make-sod-slot-initarg (defmethod make-sod-slot-initarg-using-slot ((class sod-class) name (slot sod-slot) pset &optional location) - (declare (ignore pset)) (with-slots (initargs) class (with-slots ((type %type)) slot - (push (make-instance 'sod-slot-initarg + (push (make-instance (get-property pset :initarg-class :symbol + 'sod-slot-initarg) :location (file-location location) :class class :name name :type type :slot slot) initargs))))