(luna-define-method): Clear method cache of child classes.
authortsuchiya <tsuchiya>
Thu, 26 Sep 2002 01:06:52 +0000 (01:06 +0000)
committertsuchiya <tsuchiya>
Thu, 26 Sep 2002 01:06:52 +0000 (01:06 +0000)
ChangeLog
luna.el

index 122484d..971abcb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-09-26  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
+
+       * luna.el (luna-define-method): Clear method cache of child
+       classes.
+
 2002-09-24  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>
 
        * mime-ja.texi (CVS): Escape @.
diff --git a/luna.el b/luna.el
index d264c7d..f33b83f 100644 (file)
--- a/luna.el
+++ b/luna.el
@@ -164,8 +164,13 @@ The optional 5th BODY is the body of the method."
           (sym (luna-class-find-or-make-member
                 (luna-find-class ',class) ',name))
           (cache (get ',name 'luna-method-cache)))
-       (if cache
-          (unintern (symbol-name ',class) cache))
+       (and cache
+           (fboundp sym)
+           (mapatoms
+            (lambda (s)
+              (if (memq (symbol-function sym) (symbol-value s))
+                  (unintern s cache)))
+            cache))
        (fset sym func)
        (put sym 'luna-method-qualifier ,method-qualifier))))