0.pre7.85:
authorWilliam Harold Newman <william.newman@airmail.net>
Sat, 3 Nov 2001 20:45:15 +0000 (20:45 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Sat, 3 Nov 2001 20:45:15 +0000 (20:45 +0000)
verified that LAMBDA-NAME isn't just for debugging, but can
break the compiler, too:-(

BUGS
src/compiler/main.lisp
src/compiler/node.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index 0f7be61..87e1f35 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1208,6 +1208,26 @@ Error in function C::GET-LAMBDA-TO-COMPILE:
        (bar x)))
   shouldn't compile without error (because of the extra DEFMACRO symbol).
 
+130:
+  reported by Alexey Dejneka on sbcl-devel 2001-11-03
+   (defun x (x)
+     "Return X if X is a non-negative integer."
+     (let ((step (lambda (%funcall)
+                   (lambda (n)
+                     (cond ((= n 0) 0)
+                           (t (1+ (funcall %funcall (1- n)))))))))
+       (funcall
+        ((lambda (a)
+           (funcall step (lambda (n)
+                           (funcall (funcall a a) n))))
+         (lambda (a)
+           (funcall step (lambda (n)
+                           (funcall (funcall a a) n)))))
+        x)))
+  This function returns its argument. But after removing percents it
+  does not work: "Result of (1- n) is not a function".
+
+
 KNOWN BUGS RELATED TO THE IR1 INTERPRETER
 
 (Now that the IR1 interpreter has gone away, these should be 
index a39204f..aba6d58 100644 (file)
           (format nil "~S initial component" name))
     (setf (component-kind component) :initial)
     (let* ((locall-fun (ir1-convert-lambda definition
-                                           (format nil "locall ~S" name)))
+                                          (let ((*package* *keyword-package*))
+                                            (format nil "locall ~S" name))))
            (fun (ir1-convert-lambda (make-xep-lambda locall-fun) name)))
       (setf (functional-entry-function fun) locall-fun
             (functional-kind fun) :external
index d17e0b0..d3e7d5f 100644 (file)
   ;; GLOBAL-VAR, this is the symbol name of the variable. In a
   ;; functional that is from a DEFUN, this is the defined name. In
   ;; other functionals, this is a descriptive string.
+  ;;
+  ;; KLUDGE: Note that at least for LAMBDA-VARs, this is important not
+  ;; just for debugging but for ordinary compilation as well. In
+  ;; particular, in RECOGNIZE-KNOWN-CALL function calls are compiled
+  ;; differently based on the LEAF-NAME.
   (name nil :type t)
   ;; the type which values of this leaf must have
   (type *universal-type* :type ctype)
index 229db6c..f1c41c5 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.84"
+"0.pre7.85"