(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
(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)))
(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))))