(defun intern-fun-name (name)
(cond ((symbolp name) name)
((listp name)
- (intern (let ((*package* *pcl-package*)
- (*print-case* :upcase)
- (*print-pretty* nil)
- (*print-gensym* t))
- (format nil "~S" name))
- *pcl-package*))))
+ (let ((*package* *pcl-package*)
+ (*print-case* :upcase)
+ (*print-pretty* nil)
+ (*print-gensym* t))
+ (format-symbol *pcl-package* "~S" name)))))
+
\f
;;; FIXME: probably no longer needed after init
(defmacro precompile-random-code-segments (&optional system)
(defun structure-slotd-reader-function (slotd)
(fdefinition (dsd-accessor-name slotd)))
-(defun structure-slotd-writer-function (slotd)
- (unless (dsd-read-only slotd)
- (fdefinition `(setf ,(dsd-accessor-name slotd)))))
+(defun structure-slotd-writer-function (type slotd)
+ (if (dsd-read-only slotd)
+ (let ((dd (get-structure-dd type)))
+ (coerce (slot-setter-lambda-form dd slotd) 'function))
+ (fdefinition `(setf ,(dsd-accessor-name slotd)))))
(defun structure-slotd-type (slotd)
(dsd-type slotd))