0.pre8.45:
authorWilliam Harold Newman <william.newman@airmail.net>
Mon, 7 Apr 2003 23:17:30 +0000 (23:17 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Mon, 7 Apr 2003 23:17:30 +0000 (23:17 +0000)
new declarations-are-assertions bug in the compiler...
...new BUGS entry
...workaround for symptoms in OPEN and LOAD

BUGS
src/code/target-load.lisp
src/compiler/fndb.lisp

diff --git a/BUGS b/BUGS
index 607ff00..f43d6b2 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1265,6 +1265,15 @@ WORKAROUND:
   ; caught STYLE-WARNING:
   ;   The variable Y is defined but never used.
 
+244: "optimizing away tests for &KEY args of type declared in DEFKNOWN"
+  (caught by clocc-ansi-test :EXCEPSIT-LEGACY-1050)
+  In sbcl-0.pre8.44, (OPEN "foo" :DIRECTION :INPUT :EXTERNAL-FORMAT 'FOO)
+  succeeds with no error (ignoring the bogus :EXTERNAL-FORMAT argument)
+  apparently because the test is optimized away. The problem doesn't 
+  exist in sbcl-0.pre8.19. Deleting the (MEMBER :DEFAULT) declaration
+  for :EXTERNAL-FORMAT in DEFKNOWN OPEN (and LOAD) is a workaround for
+  the problem (and should be removed when the problem is fixed).
+
 DEFUNCT CATEGORIES OF BUGS
   IR1-#:
     These labels were used for bugs related to the old IR1 interpreter.
index d572053..b760221 100644 (file)
   #!+sb-doc
   "Load the file given by FILESPEC into the Lisp environment, returning
    T on success."
+
   (unless (eq external-format :default)
     (error "Non-:DEFAULT EXTERNAL-FORMAT values are not supported."))
 
index daf551c..58e3c77 100644 (file)
                                           :rename-and-delete :overwrite
                                           :append :supersede nil))
                       (:if-does-not-exist (member :error :create nil))
-                      (:external-format (member :default)))
+                      (:external-format
+                       ;; FIXME: This is logically (MEMBER :DEFAULT),
+                       ;; but as a workaround for bug 244, we don't
+                       ;; declare it (to keep the compiler from trusting
+                       ;; the declaration unchecked).
+                       t))
   (or stream null))
 
 (defknown rename-file (pathname-designator filename)
    (:verbose t)
    (:print t)
    (:if-does-not-exist (member :error :create nil))
-   (:external-format (member :default)))
+   (:external-format
+    ;; FIXME: This is logically (MEMBER :DEFAULT), but as a workaround
+    ;; for bug 244, we don't declare it (to keep the compiler from
+    ;; trusting the declaration unchecked).
+    t))
   t)
 
 (defknown directory (pathname-designator &key)