chiark / gitweb /
Existing methods are not cleared when an define-type-generic is reevaluated
authorespen <espen>
Fri, 3 Mar 2006 19:10:21 +0000 (19:10 +0000)
committerespen <espen>
Fri, 3 Mar 2006 19:10:21 +0000 (19:10 +0000)
glib/ffi.lisp

index d57069698ea803d8c94ca0a8218ec4d3acd719c0..19c10ea815bbdc527833995bef019b13cc5942d2 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: ffi.lisp,v 1.28 2006/02/26 16:12:25 espen Exp $
+;; $Id: ffi.lisp,v 1.29 2006/03/03 19:10:21 espen Exp $
 
 (in-package "GLIB")
 
@@ -348,8 +348,9 @@ (defmacro define-type-generic (name lambda-list &optional documentation)
        (find (first lambda-list) '(&optional &key &rest &allow-other-keys)))
       (error "A type generic needs at least one required argument")
     `(progn 
-       (setf (get ',name 'type-methods) (make-hash-table))
-       (setf (get ',name 'built-in-type-hierarchy) ())
+       (unless (get ',name 'type-methods)
+        (setf (get ',name 'type-methods) (make-hash-table))
+        (setf (get ',name 'built-in-type-hierarchy) ()))
        (defun ,name ,lambda-list
         ,documentation
         (funcall