From: Christophe Rhodes Date: Fri, 31 Jan 2003 09:28:35 +0000 (+0000) Subject: 0.7.12.13: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=e38cf29945f9ff0cfbf614c0c216be60e2515175;p=sbcl.git 0.7.12.13: Fix (DEFCLASS #:FOO () ()) ... relax restriction on function names, allowing lists of length two headed by SB!PCL::CLASS-PREDICATE ... OA(more-or-less)OOify function name logic --- diff --git a/NEWS b/NEWS index 1fbab30..1c984cb 100644 --- a/NEWS +++ b/NEWS @@ -1516,6 +1516,10 @@ changes in sbcl-0.7.13 relative to sbcl-0.7.12: 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; diff --git a/src/code/early-extensions.lisp b/src/code/early-extensions.lisp index a3c401c..c342e86 100644 --- a/src/code/early-extensions.lisp +++ b/src/code/early-extensions.lisp @@ -605,7 +605,8 @@ (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))))) diff --git a/src/compiler/info-functions.lisp b/src/compiler/info-functions.lisp index 18ff9b5..8d51a97 100644 --- a/src/compiler/info-functions.lisp +++ b/src/compiler/info-functions.lisp @@ -26,9 +26,7 @@ (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) diff --git a/src/compiler/ir1-translators.lisp b/src/compiler/ir1-translators.lisp index 30e27c8..4c5a861 100644 --- a/src/compiler/ir1-translators.lisp +++ b/src/compiler/ir1-translators.lisp @@ -444,7 +444,7 @@ 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))) diff --git a/src/pcl/defs.lisp b/src/pcl/defs.lisp index 02f7edc..322563d 100644 --- a/src/pcl/defs.lisp +++ b/src/pcl/defs.lisp @@ -286,11 +286,8 @@ (defvar *standard-method-combination*) (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)) diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index 41b2049..e3efc72 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -553,5 +553,8 @@ (bug234-b) (assert (= *bug234-b* 1)) +;;; we should be able to make classes with uninterned names: +(defclass #:class-with-uninterned-name () ()) + ;;;; success (sb-ext:quit :unix-status 104) diff --git a/version.lisp-expr b/version.lisp-expr index 9acf614..145255d 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; 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"