[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

make-specializable



Your make specializable bug is fixed in the sources currently on
parcvax.xerox.com.  You should either FTP a new copy of methods.lisp or
replace the definition of make-specializable with the code included at
the end of this message.  Once you do this, use (compile-pcl) to
recompile.

Anyone who uses make-specializable should make this change.

(defun make-specializable (function-name &key (arglist nil arglistp))
  (cond ((not (null arglistp)))
	((not (fboundp function-name)))
	((fboundp 'function-arglist)
	 ;; function-arglist exists, get the arglist from it.
	 (setq arglist (function-arglist function-name)))
	(t
	 (error
	   "The :arglist argument to make-specializable was not supplied~%~
            and there is no version of FUNCTION-ARGLIST defined for this~%~
            port of Portable CommonLoops.~%~
            You must either define a version of FUNCTION-ARGLIST (which~%~
            should be easy), and send it off to the Portable CommonLoops~%~
            people or you should call make-specializable again with the~%~
            :arglist keyword to specify the arglist.")))
  (let ((original (and (fboundp function-name)
		       (symbol-function function-name)))
	(generic-function (make 'standard-generic-function
				:name function-name)))
    (setf (symbol-function function-name) generic-function)
    (when arglistp
      (setf (generic-function-pretty-arglist generic-function) arglist))
    (when original
	(add-named-method function-name
			  arglist
			  ()
			  original))
    generic-function))
-------