chiark / gitweb /
doc/sod.tex: Don't print the `Index' header in uppercase.
[sod] / src / class-make-impl.lisp
index 7263e44f7fce100afe9284d2b4d161a0c2d9799f..7495c0182e631b4b02eb49fb0a9ab8995c2e1101 100644 (file)
@@ -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))))