From d9f2baa889d7abee752262cfd251e2a431725792 Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau <fare@tunes.org> Date: Mon, 27 Mar 2017 22:10:15 -0400 Subject: [PATCH] Replace reset-system by reset-system-class Drop any information in undefined-system that isn't in proto-system. --- parse-defsystem.lisp | 5 +++-- system.lisp | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/parse-defsystem.lisp b/parse-defsystem.lisp index e298ff484..7845871fa 100644 --- a/parse-defsystem.lisp +++ b/parse-defsystem.lisp @@ -310,7 +310,8 @@ system names contained using COERCE-NAME. Return the result." dep-forms)) (system (or (find-system-if-being-defined name) (if-let (registered (registered-system name)) - (reset-system registered :name name :source-file source-file) + (reset-system-class registered 'undefined-system + :name name :source-file source-file) (register-system (make-instance 'undefined-system :name name :source-file source-file))))) (component-options @@ -328,7 +329,7 @@ system names contained using COERCE-NAME. Return the result." (unless (subtypep class 'system) (error 'non-system-system :name name :class-name (class-name class))) (unless (eq (type-of system) class) - (change-class system class))) + (reset-system-class system class))) (parse-component-form nil (list* :module name :pathname directory component-options)))) (defmacro defsystem (name &body options) diff --git a/system.lisp b/system.lisp index c09889d40..3325ee46e 100644 --- a/system.lisp +++ b/system.lisp @@ -5,7 +5,7 @@ (:recycle :asdf :asdf/system :asdf/find-system) (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/session :asdf/component) (:export - #:system #:proto-system #:undefined-system #:reset-system + #:system #:proto-system #:undefined-system #:reset-system-class #:system-source-file #:system-source-directory #:system-relative-pathname #:system-description #:system-long-description #:system-author #:system-maintainer #:system-licence #:system-license @@ -105,10 +105,10 @@ ASDF to build.")) (defclass undefined-system (system) () (:documentation "System that was not defined yet.")) - (defun reset-system (system &rest keys &key &allow-other-keys) + (defun reset-system-class (system new-class &rest keys &key &allow-other-keys) "Erase any data from a SYSTEM except its basic identity, then reinitialize it based on supplied KEYS." - (change-class (change-class system 'proto-system) 'undefined-system) + (change-class (change-class system 'proto-system) new-class) (apply 'reinitialize-instance system keys))) -- GitLab