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).
 
        (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 
 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 "~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
            (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.
   ;; 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)
   (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".)
 
 ;;; 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"