[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
make-specializable
- To: Ricks%ic.Berkeley.edu@Berkeley.edu
- Subject: make-specializable
- From: Gregor.pa@Xerox.COM
- Date: Tue, 24 Mar 87 17:26 PST
- Cc: CommonLoops.PA@Xerox.COM
- Line-fold: no
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))
-------