0.7.7.18:
[sbcl.git] / BUGS
diff --git a/BUGS b/BUGS
index a2af047..12a9426 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -582,25 +582,6 @@ WORKAROUND:
   type declarations are supposed to be treated as assertions unless
   SAFETY 0, so we should be getting a TYPE-ERROR.
 
-113:
-  reported by Martin Atzmueller 2001-06-25; originally from CMU CL bugs
-  collection:
-    (in-package :cl-user)
-    ;;; From: David Gadbois <gadbois@cyc.com>
-    ;;;
-    ;;; Logical pathnames aren't externalizable.
-    ;;; Test case:
-    (let ((tempfile "/tmp/test.lisp"))
-      (setf (logical-pathname-translations "XXX")
-            '(("XXX:**;*.*" "/tmp/**/*.*")))
-      (with-open-file (out tempfile :direction :output)
-        (write-string "(defvar *path* #P\"XXX:XXX;FOO.LISP\")" out))
-      (compile-file tempfile))
-  The error message in sbcl-0.6.12.42 is
-    ; caught ERROR:
-    ;   (while making load form for #<SB-IMPL::LOGICAL-HOST "XXX">)
-    ; A logical host can't be dumped as a constant: #<SB-IMPL::LOGICAL-HOST "XXX">
-
 115:
   reported by Martin Atzmueller 2001-06-25; originally from CMU CL bugs
   collection:
@@ -672,7 +653,9 @@ WORKAROUND:
    (IF (NOT (IGNORE-ERRORS ..))). E.g.
        (defun foo1i ()
          (if (not (ignore-errors
-                    (make-pathname :host "foo" :directory "!bla" :name "bar")))
+                    (make-pathname :host "foo"
+                                    :directory "!bla"
+                                    :name "bar")))
              (print "ok")
              (error "notunlessnot")))
    The (NOT (IGNORE-ERRORS ..)) form evaluates to T, so this should be
@@ -1085,19 +1068,6 @@ WORKAROUND:
   code. Since then the warning has been downgraded to STYLE-WARNING, 
   so it's still a bug but at least it's a little less annoying.
 
-174:
-  The error message from attempting to use a #\Return format
-  directive:
-    (format nil "~^M") ; replace "^M" with a literal #\Return
-      debugger invoked on condition of type SB-FORMAT::FORMAT-ERROR:
-      error in format:                  unknown format directive
-      ~
-       ^
-  is not terribly helpful; this is more noticeable than parallel cases
-  with e.g. #\Backspace because of the differing newline conventions
-  on various operating systems. (reported by Harald Hanche-Olsen on
-  cmucl-help 2002-05-31)
-
 176:
   reported by Alexey Dejneka 08 Jun 2002 in sbcl-devel:
     Playing with McCLIM, I've received an error "Unbound variable WRAPPER
@@ -1350,6 +1320,16 @@ WORKAROUND:
   bad argument value is).
 
 194: "no error from (THE REAL '(1 2 3)) in some cases"
+  (Actually this entry is probably two separate bugs, as
+  Alexey Dejneka commented on sbcl-devel 2002-09-03:)
+       I don't think that placing these two bugs in one entry is
+       a good idea: they have different explanations. The second
+       (min 1 nil) is caused by flushing of unused code--IDENTITY
+       can do nothing with it. So it is really bug 122. The first
+       (min nil) is due to M-V-PROG1: substituting a continuation
+       for the result, it forgets about type assertion. The purpose
+       of IDENTITY is to save the restricted continuation from
+       inaccurate transformations.
   In sbcl-0.7.7.9, 
     (multiple-value-prog1 (progn (the real '(1 2 3))))
   returns (1 2 3) instead of signalling an error. Also in sbcl-0.7.7.9,
@@ -1357,6 +1337,40 @@ WORKAROUND:
   (IGNORE-ERRORS (MIN '(1 2 3))) from returning NIL as it should when
   the MIN source transform expanded to (THE REAL '(1 2 3)), because
   (IGNORE-ERRORS (THE REAL '(1 2 3))) returns (1 2 3).
+  Alexey Dejneka pointed out that
+  (IGNORE-ERRORS (IDENTITY (THE REAL '(1 2 3)))) works as it should.
+  (IGNORE-ERRORS (VALUES (THE REAL '(1 2 3)))) also works as it should.
+  Perhaps this is another case of VALUES type intersections behaving
+  in non-useful ways?
+    When I (WHN) tried to use the VALUES trick to work around this bug
+  in the MIN source transform, it didn't work for
+    (assert (null (ignore-errors (min 1 #(1 2 3)))))
+  Hand-expanding the source transform, I get
+    (assert (null (ignore-errors
+                   (let ((arg1 1)
+                         (arg2 (identity (the real #(1 2 3)))))
+                     (if (< arg1 arg2) arg1 arg2))))) 
+  which fails (i.e. the assertion fails, because the IGNORE-ERRORS
+  doesn't report MIN signalling a type error). At the REPL
+    (null (ignore-errors
+           (let ((arg1 1)
+                 (arg2 (identity (the real #(1 2 3)))))
+             (if (< arg1 arg2) arg1 arg2))))
+    => T
+  but when this expression is used as the body of (DEFUN FOO () ...)
+  then (FOO)=>NIL.
+
+195: "confusing reporting of not-a-REAL TYPE-ERRORs from THE REAL"
+  In sbcl-0.7.7.10, (THE REAL #(1 2 3)) signals a type error which
+  prints as "This is not a (OR SINGLE-FLOAT DOUBLE-FLOAT RATIONAL)".
+  The (OR SINGLE-FLOAT DOUBLE-FLOAT RATIONAL) representation of
+  REAL is unnecessarily confusing, especially since it relies on 
+  internal implementation knowledge that even with SHORT-FLOAT
+  and LONG-FLOAT left out of the union, this type is equal to REAL.
+  So it'd be better just to say "This is not a REAL".
+
+196: "confusing error message for unREAL second arg to ATAN"
+  (fixed in sbcl-0.7.7.18)
 
 DEFUNCT CATEGORIES OF BUGS
   IR1-#: