COMPILE or FUNCTION.
* fixed a bug in DEFSTRUCT: predicates for :NAMED structures with
:TYPE will no longer signal errors on innocuous objects.
+ * fixed bug 231b: SETQ is better at respecting type declarations in
+ the lexical environment.
+ * fixed a bug in DEFCLASS: classes named by symbols with no or
+ unprintable packages can now be defined.
* fixed some bugs revealed by Paul Dietz' test suite:
** ARRAY-IN-BOUNDS-P now allows arbitrary integers as arguments,
not just nonnegative fixnums;
(defun legal-fun-name-p (name)
(or (symbolp name)
(and (consp name)
- (eq (car name) 'setf)
+ (or (eq (car name) 'setf)
+ (eq (car name) 'sb!pcl::class-predicate))
(consp (cdr name))
(symbolp (cadr name))
(null (cddr name)))))
(defun check-fun-name (name)
(typecase name
(list
- (unless (and (consp name) (consp (cdr name))
- (null (cddr name)) (eq (car name) 'setf)
- (symbolp (cadr name)))
+ (unless (legal-fun-name-p name)
(compiler-error "illegal function name: ~S" name)))
(symbol
(when (eq (info :function :kind name) :special-form)
thing
:debug-name (debug-namify "#'~S" thing)
:allow-debug-catch-tag t)))
- ((setf)
+ ((setf sb!pcl::class-predicate)
(let ((var (find-lexically-apparent-fun
thing "as the argument to FUNCTION")))
(reference-leaf start cont var)))
(defvar *standard-method-combination*)
\f
(defun make-class-predicate-name (name)
- (intern (format nil "~A::~A class predicate"
- (package-name (symbol-package name))
- name)
- *pcl-package*))
-
+ (list 'class-predicate name))
+
(defun plist-value (object name)
(getf (object-plist object) name))
(bug234-b)
(assert (= *bug234-b* 1))
\f
+;;; we should be able to make classes with uninterned names:
+(defclass #:class-with-uninterned-name () ())
+\f
;;;; success
(sb-ext:quit :unix-status 104)
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.7.12.12"
+"0.7.12.13"