X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdefclass.lisp;h=33bfd0b1a3024063326c7942436f413e21d406b9;hb=d01d509257052e694365b76be5ab597fa06764ec;hp=6a2bc1989833b9f7f88354da2390457f6aefd775;hpb=31f072311935e32751508ecf824905c6b58a1d95;p=sbcl.git diff --git a/src/pcl/defclass.lisp b/src/pcl/defclass.lisp index 6a2bc19..33bfd0b 100644 --- a/src/pcl/defclass.lisp +++ b/src/pcl/defclass.lisp @@ -53,7 +53,7 @@ ;; DEFSTRUCT-P should be true if the class is defined ;; with a metaclass STRUCTURE-CLASS, so that a DEFSTRUCT ;; is compiled for the class. - (defstruct-p (and (eq *boot-state* 'complete) + (defstruct-p (and (eq **boot-state** 'complete) (let ((mclass (find-class metaclass nil))) (and mclass (*subtypep @@ -72,7 +72,8 @@ ',*readers-for-this-defclass* ',*writers-for-this-defclass* ',*slot-names-for-this-defclass* - (sb-c:source-location))))) + (sb-c:source-location) + ',(safe-code-p env))))) (if defstruct-p (progn ;; FIXME: (YUK!) Why do we do this? Because in order @@ -87,7 +88,7 @@ ;; then use CLASS-DIRECT-SLOTS. -- CSR, 2002-06-07 (eval defclass-form) (let* ((include (or (and direct-superclasses - (fix-super (car direct-superclasses))) + (find-class (car direct-superclasses) nil)) (and (not (eq name 'structure-object)) *the-class-structure-object*))) (defstruct-form (make-structure-class-defstruct-form @@ -120,9 +121,10 @@ (defun canonize-defclass-options (class-name options) (maplist (lambda (sublist) (let ((option-name (first (pop sublist)))) - (when (member option-name sublist :key #'first) - (error "Multiple ~S options in DEFCLASS ~S." - option-name class-name)))) + (when (member option-name sublist :key #'first :test #'eq) + (error 'simple-program-error + :format-control "Multiple ~S options in DEFCLASS ~S." + :format-arguments (list option-name class-name))))) options) (let (metaclass default-initargs @@ -135,14 +137,15 @@ (:metaclass (let ((maybe-metaclass (second option))) (unless (and maybe-metaclass (legal-class-name-p maybe-metaclass)) - (error "~@" - maybe-metaclass)) + :format-arguments (list maybe-metaclass))) (setf metaclass maybe-metaclass))) (:default-initargs (let (initargs arg-names) (doplist (key val) (cdr option) - (when (member key arg-names) + (when (member key arg-names :test #'eq) (error 'simple-program-error :format-control "~@