0.pre7.107:
authorWilliam Harold Newman <william.newman@airmail.net>
Sun, 30 Dec 2001 19:22:29 +0000 (19:22 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Sun, 30 Dec 2001 19:22:29 +0000 (19:22 +0000)
messed around with xc bug 138
tried and rejected CR sbcl-devel 2001-12-30 patch for bug 139

BUGS
src/code/condition.lisp
src/code/filesys.lisp
src/compiler/vop.lisp
tests/filesys.pure.lisp
tests/filesys.test.sh
version.lisp-expr

diff --git a/BUGS b/BUGS
index 534c999..9bec3d3 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1324,6 +1324,60 @@ Error in function C::GET-LAMBDA-TO-COMPILE:
   But please do fix some or all of the problem, I'm tired
   of messing with it. -- WHN 2001-12-22
 
+138:
+  a cross-compiler bug in sbcl-0.pre7.107
+
+  $ cat > /tmp/bug139.lisp << EOF
+  (in-package "SB!KERNEL")
+  (defun f-c-l (name parent-types)
+    (let* ((cpl (mapcar (lambda (x) 
+                          (condition-class-cpl x))
+                        parent-types))
+           (new-inherits
+             (concatenate 'simple-vector
+                          (layout-inherits cond-layout))))
+      (if (not (mismatch (layout-inherits olayout) new-inherits))
+          olayout
+          (make-layout))))
+  EOF
+  $ sbcl --core output/after-xc.core
+  ...
+  * (target-compile-file "/tmp/bug139.lisp")
+  ...
+  internal error, failed AVER:
+    "(COMMON-LISP:MEMBER SB!C::FUN (SB!C::COMPONENT-LAMBDAS SB!C:COMPONENT))"
+
+  It seems as though this xc bug is likely to correspond to a bug in the
+  ordinary compiler, but I haven't yet found a test case which causes
+  this problem in the ordinary compiler.
+
+  related weirdness: Using #'(LAMBDA (X) ...) instead of (LAMBDA (X) ...)
+  makes the assertion failure go away.
+
+139:
+  In sbcl-0.pre7.107, (DIRECTORY "*.*") is broken, as reported by 
+  Nathan Froyd sbcl-devel 2001-12-28.
+
+  Christophe Rhodes suggested (sbcl-devel 2001-12-30) converting
+  the MERGED-PATHNAME expression in DEFUN DIRECTORY to
+        (merged-pathname (merge-pathnames pathname
+                                         *default-pathname-defaults*))
+  This looks right, and fixes this bug, but it interacts with the NODES
+  logic in %ENUMERATE-PATHNAMES to create a new bug, so that
+  (DIRECTORY "../**/*.*") no longer shows files in the current working
+  directory. Probably %ENUMERATE-PATHNAMES (or related logic like
+  %ENUMERATE-MATCHES) needs to be patched as well.
+
+  Note: The MERGED-PATHNAME change changes behavior incompatibly,
+  making e.g. (DIRECTORY "*") no longer equivalent to (DIRECTORY "*.*"),
+  so deserves a NEWS entry. E.g.
+* minor incompatible change (part of a bug fix by Christophe Rhodes
+  to DIRECTORY behavior): DIRECTORY no longer implicitly promotes
+  NIL slots of its pathname argument to :WILD, and in particular
+  asking for the contents of a directory, which you used to be able
+  to do without explicit wildcards, e.g. (DIRECTORY "/tmp/"), 
+  now needs explicit wildcards, e.g. (DIRECTORY "/tmp/*.*").
+
 
 KNOWN BUGS RELATED TO THE IR1 INTERPRETER
 
index 43d9366..d52aecc 100644 (file)
@@ -90,7 +90,7 @@
 (eval-when (:compile-toplevel :load-toplevel :execute)
   (/show0 "condition.lisp 103")
   (let ((condition-class (locally
-                          ;; KLUDGE: There's a FIND-CLASS DEFTRANSFORM for
+                          ;; KLUDGE: There's a DEFTRANSFORM FIND-CLASS for
                           ;; constant class names which creates fast but
                           ;; non-cold-loadable, non-compact code. In this
                           ;; context, we'd rather have compact, cold-loadable
   (/show0 "condition.lisp 103"))
 
 (setf (condition-class-report (locally
-                               ;; KLUDGE: There's a FIND-CLASS DEFTRANSFORM
+                               ;; KLUDGE: There's a DEFTRANSFORM FIND-CLASS 
                                ;; for constant class names which creates fast
                                ;; but non-cold-loadable, non-compact code. In
                                ;; this context, we'd rather have compact,
index 214e585..1440777 100644 (file)
   (let ((directory (pathname-directory pathname)))
     (/noshow0 "computed DIRECTORY")
     (if directory
-       (ecase (car directory)
+       (ecase (first directory)
          (:absolute
           (/noshow0 "absolute directory")
-          (%enumerate-directories "/" (cdr directory) pathname
+          (%enumerate-directories "/" (rest directory) pathname
                                   verify-existence follow-links
                                   nil function))
          (:relative
           (/noshow0 "relative directory")
-          (%enumerate-directories "" (cdr directory) pathname
+          (%enumerate-directories "" (rest directory) pathname
                                   verify-existence follow-links
                                   nil function)))
        (%enumerate-files "" pathname verify-existence function))))
        ;; can arise when e.g. multiple symlinks map to the same
        ;; truename).
        (truenames (make-hash-table :test #'equal))
+       ;; FIXME: not really right, as per bug 139
         (merged-pathname (merge-pathnames pathname
                                          (make-pathname :name :wild
                                                         :type :wild
index 2929961..29d1a49 100644 (file)
   ;; function as far as the debugger is concerned.
   (environment-start nil :type (or label null)))
 (defprinter (ir2-physenv)
-  environment
+  closure
   old-fp
   return-pc
   return-pc-pass)
index 09e770b..559e0fd 100644 (file)
@@ -28,7 +28,7 @@
 
 ;;; In sbcl-0.6.9 DIRECTORY failed on paths with :WILD or
 ;;; :WILD-INFERIORS in their directory components.
-(let ((dir (directory "../**/*")))
+(let ((dir (directory "../**/*.*")))
   ;; We know a little bit about the structure of this result;
   ;; let's test to make sure that this test file is in it.
   (assert (find-if (lambda (pathname)
@@ -37,7 +37,7 @@
                   dir)))
 
 ;;; ANSI: FILE-LENGTH should signal an error of type TYPE-ERROR if
-;;; stream is not a stream associated with a file.
+;;; STREAM is not a stream associated with a file.
 ;;;
 ;;; (Peter Van Eynde's ansi-test suite caught this, and Eric Marsden
 ;;; reported a fix for CMU CL, which was ported to sbcl-0.6.12.35.)
index d944cf2..37c0e0b 100644 (file)
@@ -32,7 +32,7 @@ expected_truenames=\
    #p\"$testdir/test-2.tmp\")"
 $SBCL <<EOF
   (in-package :cl-user)
-  (let* ((directory (directory "./*"))
+  (let* ((directory (directory "./*.*"))
          (truenames (sort directory #'string< :key #'pathname-name)))
     (format t "~&TRUENAMES=~S~%" truenames)
     (finish-output)
@@ -53,7 +53,7 @@ fi
 cd ..
 $SBCL <<EOF
   (in-package :cl-user)
-  (let* ((directory (directory "$testdir/*"))
+  (let* ((directory (directory "$testdir/*.*"))
          (truenames (sort directory #'string< :key #'pathname-name)))
     (format t "~&TRUENAMES=~S~%" truenames)
     (finish-output)
index ee94201..c8d887c 100644 (file)
@@ -18,4 +18,4 @@
 ;;; for internal versions, especially for internal versions off the
 ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
 
-"0.pre7.106"
+"0.pre7.107"