X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=414d01006bf62c35ada492b4b747fa478f9be3dd;hb=7522f7615389fd4e6b24d34d38ff8b4b96bb6812;hp=2ca448f77e12bb385f905d8f0957e087d0fa79c8;hpb=e3113504fca73ebd1b992930315386d9d3ae5d18;p=sbcl.git diff --git a/BUGS b/BUGS index 2ca448f..414d010 100644 --- a/BUGS +++ b/BUGS @@ -606,21 +606,14 @@ WORKAROUND: can erroneously return T. 215: ":TEST-NOT handling by functions" - a. FIND and POSITION currently signal errors when given non-NIL for - both their :TEST and (deprecated) :TEST-NOT arguments, but by - ANSI 17.2 "the consequences are unspecified", which by ANSI 1.4.2 - means that the effect is "unpredictable but harmless". It's not - clear what that actually means; it may preclude conforming - implementations from signalling errors. - b. COUNT, REMOVE and the like give priority to a :TEST-NOT argument - when conflict occurs. As a quality of implementation issue, it - might be preferable to treat :TEST and :TEST-NOT as being in some - sense the same &KEY, and effectively take the first test function in - the argument list. - c. Again, a quality of implementation issue: it would be good to issue a - STYLE-WARNING at compile-time for calls with :TEST-NOT, and a - WARNING for calls with both :TEST and :TEST-NOT; possibly this - latter should be WARNed about at execute-time too. + + We should verify that our handling of :TEST-NOT and :TEST is consistent + for all functions that accept them: that is, signal an error if both + are specified. + + Similarly, a compile-time full warning for calls with both would be good. + + We might also consider a compile-time style warning for :TEST-NOT. 216: "debugger confused by frames with invalid number of arguments" In sbcl-0.7.8.51, executing e.g. (VECTOR-PUSH-EXTEND T), BACKTRACE, Q @@ -841,14 +834,6 @@ WORKAROUND: (fixed in 0.8.2.51, but a test case would be good) -276: - b. The same as in a., but using MULTIPLE-VALUE-SETQ instead of SETQ. - c. (defvar *faa*) - (defmethod faa ((*faa* double-float)) - (set '*faa* (when (< *faa* 0) (- *faa*))) - (1+ *faa*)) - (faa 1d0) => type error - 279: type propagation error -- correctly inferred type goes astray? In sbcl-0.8.3 and sbcl-0.8.1.47, the warning The binding of ABS-FOO is a (VALUES (INTEGER 0 0) @@ -1133,25 +1118,6 @@ WORKAROUND: in the wrapper, and then to update the instance just run through all the old wrappers in order from oldest to newest. -332: "fasl stack inconsistency in structure redefinition" - (reported by Tim Daly Jr sbcl-devel 2004-05-06) - Even though structure redefinition is undefined by the standard, the - following behaviour is suboptimal: running - (defun stimulate-sbcl () - (let ((filename (format nil "/tmp/~A.lisp" (gensym)))) - ;;create a file which redefines a structure incompatibly - (with-open-file (f filename :direction :output :if-exists :supersede) - (print '(defstruct astruct foo) f) - (print '(defstruct astruct foo bar) f)) - ;;compile and load the file, then invoke the continue restart on - ;;the structure redefinition error - (handler-bind ((error (lambda (c) (continue c)))) - (load (compile-file filename))))) - (stimulate-sbcl) - and choosing the CONTINUE restart yields the message - debugger invoked on a SB-INT:BUG in thread 27726: - fasl stack not empty when it should be - 336: "slot-definitions must retain the generic functions of accessors" reported by Tony Martinez: (defclass foo () ((bar :reader foo-bar))) @@ -1396,30 +1362,6 @@ WORKAROUND: Expected: ERROR Got: # -369: unlike-an-intersection behavior of VALUES-TYPE-INTERSECTION - In sbcl-0.8.18.2, the identity $(x \cap y \cap y)=(x \cap y)$ - does not hold for VALUES-TYPE-INTERSECTION, even for types which - can be intersected exactly, so that ASSERTs fail in this test case: - (in-package :cl-user) - (let ((types (mapcar #'sb-c::values-specifier-type - '((values (vector package) &optional) - (values (vector package) &rest t) - (values (vector hash-table) &rest t) - (values (vector hash-table) &optional) - (values t &optional) - (values t &rest t) - (values nil &optional) - (values nil &rest t) - (values sequence &optional) - (values sequence &rest t) - (values list &optional) - (values list &rest t))))) - (dolist (x types) - (dolist (y types) - (let ((i (sb-c::values-type-intersection x y))) - (assert (sb-c::type= i (sb-c::values-type-intersection i x))) - (assert (sb-c::type= i (sb-c::values-type-intersection i y))))))) - 370: reader misbehaviour on large-exponent floats (read-from-string "1.0s1000000000000000000000000000000000000000") causes the reader to attempt to create a very large bignum (which it @@ -1457,19 +1399,6 @@ WORKAROUND: 379: TRACE :ENCAPSULATE NIL broken on ppc/darwin See commented-out test-case in debug.impure.lisp. -380: Accessor redefinition fails because of old accessor name - When redefining an accessor, SB-PCL::FIX-SLOT-ACCESSORS may try to - find the generic function named by the old accessor name using - ENSURE-GENERIC-FUNCTION and then remove the old accessor's method in - the GF. If the old name does not name a function, or if the old name - does not name a generic function, no attempt to find the GF or remove - any methods is made. - - However, if an unrelated GF with an incompatible lambda list exists, - the class redefinition will fail when SB-PCL::REMOVE-READER-METHOD - tries to find and remove a method with an incompatible lambda list - from the unrelated generic function. - 382: externalization unexpectedly changes array simplicity COMPILE-FILE and LOAD (defun foo () @@ -1669,17 +1598,6 @@ WORKAROUND: perhaps because CLISP has shuffled the clauses into an ANSI-compliant order before proceeding. -405: a TYPE-ERROR in MERGE-LETS exercised at DEBUG 3 - In sbcl-0.9.16.21 on linux/86, compiling - (declaim (optimize (debug 3))) - (defstruct foo bar) - (let () - (flet ((i (x) (frob x (foo-bar foo)))) - (i :five))) - causes a TYPE-ERROR - The value NIL is not of type SB-C::PHYSENV. - in MERGE-LETS. - 406: functional has external references -- failed aver Given the following food in a single file (eval-when (:compile-toplevel :load-toplevel :execute)