From 9ce21b91f95674309fa7f8352abeb33935f465b3 Mon Sep 17 00:00:00 2001 From: pw <pw> Date: Sat, 22 Sep 2001 13:57:42 +0000 Subject: [PATCH] This revision turns on INFORM-TYPE-SYSTEM-ABOUT-STD-CLASS which represses compiler warnings about undefined class when compiling defmethods in the same file as the defclass forms. It does this by calling (lisp:make-class :name class-name) which creates a minimal entry such that lisp:find-class will return non-nil. The class entry is filled out at load time. A consequence of this is that until load time, any attempt to treat that minimal class as valid will fail, probably because lisp:class-layout => NIL. This doesn't seem a problem in current practice. --- pcl/defs.lisp | 3 +-- pcl/low.lisp | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pcl/defs.lisp b/pcl/defs.lisp index e738353b8..80394262f 100644 --- a/pcl/defs.lisp +++ b/pcl/defs.lisp @@ -1,4 +1,4 @@ -;;;-*-Mode:LISP; Package:(PCL LISP 1000); Base:10; Syntax:Common-lisp -*- +;;;-*-Mode:LISP; Package:PCL -*- ;;; ;;; ************************************************************************* ;;; Copyright (c) 1985, 1986, 1987, 1988, 1989, 1990 Xerox Corporation. @@ -192,7 +192,6 @@ ;; skeleton class will be replaced at load-time with the correct object. ;; Earlier revisions (<= 1.17) of this function were essentially NOOPs. (declare (ignorable name)) - #+nil ;; This is causing problems with native compile of defcombin.lisp (when (and (eq *boot-state* 'complete) (null (lisp:find-class name nil))) (setf (lisp:find-class name) diff --git a/pcl/low.lisp b/pcl/low.lisp index 077ba46ab..425955643 100644 --- a/pcl/low.lisp +++ b/pcl/low.lisp @@ -26,7 +26,7 @@ ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/low.lisp,v 1.14 2001/04/17 17:30:14 pw Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/low.lisp,v 1.15 2001/09/22 13:57:42 pw Exp $") ;;; ;;; This file contains optimized low-level constructs for PCL. @@ -332,6 +332,9 @@ the compiler as completely as possible. Currently this means that (and (symbolp type) (let ((class (lisp:find-class type nil))) (and class + ;; class may not be complete if created by + ;; inform-type-system-aboutd-std-class + (kernel:class-layout class) (typep (kernel:layout-info (kernel:class-layout class)) 'kernel:defstruct-description))))) -- GitLab