X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=c38234307f2f09e366b3b1668571f21bc49d58fc;hb=6ab9c60f1c53cc7cc912d644658bc23453a82ac4;hp=0971576a6530edfa79d335fd6b9c19e33819c534;hpb=6f7128b46e9ca91de777f61e8623bf5d997b2987;p=sbcl.git diff --git a/BUGS b/BUGS index 0971576..c382343 100644 --- a/BUGS +++ b/BUGS @@ -481,20 +481,6 @@ WORKAROUND: This is probably the same bug as 216 -167: - In sbcl-0.7.3.11, compiling the (illegal) code - (in-package :cl-user) - (defmethod prove ((uustk uustk)) - (zap ((frob () nil)) - (frob))) - gives the (not terribly clear) error message - ; caught ERROR: - ; (during macroexpansion of (DEFMETHOD PROVE ...)) - ; can't get template for (FROB NIL NIL) - The problem seems to be that the code walker used by the DEFMETHOD - macro is unhappy with the illegal syntax in the method body, and - is giving an unclear error message. - 173: The compiler sometimes tries to constant-fold expressions before it checks to see whether they can be reached. This can lead to @@ -922,9 +908,6 @@ WORKAROUND: (list x y))) (funcall (eval #'foo) 1))) -269: - SCALE-FLOAT should accept any integer for its second argument. - 270: In the following function constraint propagator optimizes nothing: @@ -1389,48 +1372,6 @@ WORKAROUND: debugger invoked on a SB-INT:BUG in thread 27726: fasl stack not empty when it should be -333: "CHECK-TYPE TYPE-ERROR-DATUM place" - (reported by Tony Martinez sbcl-devel 2004-05-23) - When CHECK-TYPE signals a TYPE-ERROR, the TYPE-ERROR-DATUM holds the - lisp symbolic place in question rather than the place's value. This - seems wrong. - -334: "COMPUTE-SLOTS used to add slots to classes" - (reported by Bruno Haible sbcl-devel 2004-06-01) - a. Adding a local slot does not work: - (use-package "SB-PCL") - (defclass b (a) ()) - (defmethod compute-slots ((class (eql (find-class 'b)))) - (append (call-next-method) - (list (make-instance 'standard-effective-slot-definition - :name 'y - :allocation :instance)))) - (defclass a () ((x :allocation :class))) - ;; A should now have a shared slot, X, and a local slot, Y. - (mapcar #'slot-definition-location (class-slots (find-class 'b))) - yields - There is no applicable method for the generic function - # - when called with arguments - (NIL). - - b. Adding a class slot does not work: - (use-package "SB-PCL") - (defclass b (a) ()) - (defmethod compute-slots ((class (eql (find-class 'b)))) - (append (call-next-method) - (list (make-instance 'standard-effective-slot-definition - :name 'y - :allocation :class)))) - (defclass a () ((x :allocation :class))) - ;; A should now have two shared slots, X and Y. - (mapcar #'slot-definition-location (class-slots (find-class 'b))) - yields - There is no applicable method for the generic function - # - when called with arguments - (NIL). - 336: "slot-definitions must retain the generic functions of accessors" reported by Tony Martinez: (defclass foo () ((bar :reader foo-bar))) @@ -1546,16 +1487,89 @@ WORKAROUND: (test-um12 17)) fails with NO-APPLICABLE-METHOD. -338: "MOP specializers as type specifiers" - (reported by Bruno Haible sbcl-devel 2004-06-11) - - ANSI 7.6.2 says: - Because every valid parameter specializer is also a valid type - specifier, the function typep can be used during method selection - to determine whether an argument satisfies a parameter - specializer. - - however, SBCL's EQL specializers are not type specifiers: - (defmethod foo ((x (eql 4.0))) 3.0) - (typep 1 (first (sb-pcl:method-specializers *))) - gives an error. +339: "DEFINE-METHOD-COMBINATION bugs" + (reported by Bruno Haible via the clisp test suite) + + a. Syntax checking laxity (should produce errors): + i. (define-method-combination foo :documentation :operator) + ii. (define-method-combination foo :documentation nil) + iii. (define-method-combination foo nil) + iv. (define-method-combination foo nil nil + (:arguments order &aux &key)) + v. (define-method-combination foo nil nil (:arguments &whole)) + vi. (define-method-combination foo nil nil (:generic-function)) + vii. (define-method-combination foo nil nil (:generic-function bar baz)) + viii. (define-method-combination foo nil nil (:generic-function (bar))) + ix. (define-method-combination foo nil ((3))) + x. (define-method-combination foo nil ((a))) + + b. define-method-combination arguments lambda list badness + i. &aux args are currently unsupported; + ii. default values of &optional and &key arguments are ignored; + iii. supplied-p variables for &optional and &key arguments are not + bound. + + c. qualifier matching incorrect + (progn + (define-method-combination mc27 () + ((normal ()) + (ignored (:ignore :unused))) + `(list 'result + ,@(mapcar #'(lambda (method) `(call-method ,method)) normal))) + (defgeneric test-mc27 (x) + (:method-combination mc27) + (:method :ignore ((x number)) (/ 0))) + (test-mc27 7)) + + should signal an invalid-method-error, as the :IGNORE (NUMBER) + method is applicable, and yet matches neither of the method group + qualifier patterns. + +340: SETF of VALUES using too many values + (fixed in sbcl-0.8.12.10) + +341: PPRINT-LOGICAL-BLOCK / PPRINT-FILL / PPRINT-LINEAR sharing detection. + (from Paul Dietz' test suite) + + CLHS on PPRINT-LINEAR and PPRINT-FILL (and PPRINT-TABULAR, though + that's slightly different) states that these functions perform + circular and shared structure detection on their object. Therefore, + + a.(let ((*print-circle* t)) + (pprint-linear *standard-output* (let ((x '(a))) (list x x)))) + should print "(#1=(A) #1#)" + + b.(let ((*print-circle* t)) + (pprint-linear *standard-output* + (let ((x (cons nil nil))) (setf (cdr x) x) x))) + should print "#1=(NIL . #1#)" + + (it is likely that the fault lies in PPRINT-LOGICAL-BLOCK, as + suggested by the suggested implementation of PPRINT-TABULAR) + +342: PPRINT-TABULAR / PPRINT-LOGICAL-BLOCK logical block start position + The logical block introduced by PPRINT-LOGICAL-BLOCK should not + include the prefix, so that + (pprint-tabular *standard-output* '(1 2 3) t nil 2) + should print + "(1 2 3)" rather than "(1 2 3)". + +343: MOP:COMPUTE-DISCRIMINATING-FUNCTION overriding causes error + Even the simplest possible overriding of + COMPUTE-DISCRIMINATING-FUNCTION, suggested in the PCL implementation + as "canonical", does not work: + (defclass my-generic-function (standard-generic-function) () + (:metaclass funcallable-standard-class)) + (defmethod compute-discriminating-function ((gf my-generic-function)) + (let ((dfun (call-next-method))) + (lambda (&rest args) + (apply dfun args)))) + (defgeneric foo (x) + (:generic-function-class my-generic-function)) + (defmethod foo (x) (+ x x)) + (foo 5) + signals an error. This error is the same even if the LAMBDA is + replaced by (FUNCTION (SB-KERNEL:INSTANCE-LAMBDA ...)). Maybe the + SET-FUNCALLABLE-INSTANCE-FUN scary stuff in + src/code/target-defstruct.lisp is broken? This seems to be broken + in CMUCL 18e, so it's not caused by a recent change.