X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=inline;f=BUGS;h=c38234307f2f09e366b3b1668571f21bc49d58fc;hb=ecae2f9323086c64d026d4ce719590907f486c63;hp=66d06c99807c03031caa8729c68bd3d27621c5c9;hpb=0d1030c5fea1986c6383b6be531f95da7ae20644;p=sbcl.git diff --git a/BUGS b/BUGS index 66d06c9..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,42 +1372,6 @@ WORKAROUND: debugger invoked on a SB-INT:BUG in thread 27726: fasl stack not empty when it should be -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))) @@ -1540,20 +1487,6 @@ 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) @@ -1593,11 +1526,50 @@ WORKAROUND: qualifier patterns. 340: SETF of VALUES using too many values - (reported by Kalle Olavi Niemetalo via the Debian bug system, with - bug id #256764) - - (let ((a t) (b t) (c t) (d t)) - (setf (values (values a b) (values c d)) (values 1 2 3 4)) - (list a b c d)) - should return (1 NIL 2 NIL), but under sbcl-0.8.12.x returns - (1 2 3 4) instead. + (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.