diff options
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/emacs-lisp/eieio-core.el | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el index 582ac8a6524..92d7234bc73 100644 --- a/lisp/emacs-lisp/eieio-core.el +++ b/lisp/emacs-lisp/eieio-core.el | |||
| @@ -88,7 +88,7 @@ Currently under control of this var: | |||
| 88 | 88 | ||
| 89 | (cl-defstruct (eieio--class | 89 | (cl-defstruct (eieio--class |
| 90 | (:constructor nil) | 90 | (:constructor nil) |
| 91 | (:constructor eieio--class-make (name &aux (tag 'defclass))) | 91 | (:constructor eieio--class-make (name)) |
| 92 | (:include cl--class) | 92 | (:include cl--class) |
| 93 | (:copier nil)) | 93 | (:copier nil)) |
| 94 | children | 94 | children |
| @@ -292,7 +292,13 @@ See `defclass' for more information." | |||
| 292 | ;; method table breakage, particularly when the users is only | 292 | ;; method table breakage, particularly when the users is only |
| 293 | ;; byte compiling an EIEIO file. | 293 | ;; byte compiling an EIEIO file. |
| 294 | (if oldc | 294 | (if oldc |
| 295 | (setf (eieio--class-children newc) (eieio--class-children oldc)) | 295 | (progn |
| 296 | (cl-assert (eq newc oldc)) | ||
| 297 | ;; Reset the fields. | ||
| 298 | (setf (eieio--class-parents newc) nil) | ||
| 299 | (setf (eieio--class-slots newc) nil) | ||
| 300 | (setf (eieio--class-initarg-tuples newc) nil) | ||
| 301 | (setf (eieio--class-class-slots newc) nil)) | ||
| 296 | ;; If the old class did not exist, but did exist in the autoload map, | 302 | ;; If the old class did not exist, but did exist in the autoload map, |
| 297 | ;; then adopt those children. This is like the above, but deals with | 303 | ;; then adopt those children. This is like the above, but deals with |
| 298 | ;; autoloads nicely. | 304 | ;; autoloads nicely. |