From a79121d74f159a3f3bacab8b2a98070801a3d71c Mon Sep 17 00:00:00 2001 From: ram <ram> Date: Tue, 16 Mar 1993 01:52:26 +0000 Subject: [PATCH] Fixed FREEZE-TYPE to seal all subclasses. --- compiler/proclaim.lisp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/proclaim.lisp b/compiler/proclaim.lisp index 2f6497d3f..6a652539b 100644 --- a/compiler/proclaim.lisp +++ b/compiler/proclaim.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/proclaim.lisp,v 1.27 1993/02/26 08:39:13 ram Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/proclaim.lisp,v 1.28 1993/03/16 01:52:26 ram Exp $") ;;; ;;; ********************************************************************** ;;; @@ -346,9 +346,14 @@ (setf (info function where-from name) :declared))))))) (freeze-type (dolist (type args) - (specifier-type type); Give undefined type warnings... - (when (eq (info type kind type) :instance) - (setf (class-state (find-class type)) :sealed)))) + (let ((class (specifier-type type))) + (when (typep class 'class) + (setf (class-state class) :sealed) + (let ((subclasses (class-subclasses class))) + (when subclasses + (do-hash (subclass layout subclasses) + (declare (ignore layout)) + (setf (class-state subclass) :sealed)))))))) (function ;; ;; Handle old-style FUNCTION declaration, which is a shorthand for -- GitLab