From 62632ded19a81b329a33f5122649d7b6e06e3d76 Mon Sep 17 00:00:00 2001 From: William Harold Newman Date: Thu, 4 Jul 2002 22:08:52 +0000 Subject: [PATCH] 0.7.5.4: merged CSR's "BUG 156" patch (from sbcl-devel 2002-07-02) --- BUGS | 7 ------- src/compiler/main.lisp | 23 +++++++++++++++++++++++ tests/compiler.pure.lisp | 7 +++++++ version.lisp-expr | 2 +- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/BUGS b/BUGS index 874a2af..08bfbdc 100644 --- a/BUGS +++ b/BUGS @@ -1130,13 +1130,6 @@ WORKAROUND: but it has happened in more complicated cases (which I haven't figured out how to reproduce). -156: - FUNCTION-LAMBDA-EXPRESSION doesn't work right in 0.7.0 or 0.7.2.9: - * (function-lambda-expression #'(lambda (x) x)) - debugger invoked on condition of type TYPE-ERROR: - The value NIL is not of type SB-C::DEBUG-SOURCE - (reported by Alexey Dejneka sbcl-devel 2002-04-12) - 157: Functions SUBTYPEP, TYPEP, UPGRADED-ARRAY-ELEMENT-TYPE, and UPGRADED-COMPLEX-PART-TYPE should have an optional environment argument. diff --git a/src/compiler/main.lisp b/src/compiler/main.lisp index 89f7813..55be15e 100644 --- a/src/compiler/main.lisp +++ b/src/compiler/main.lisp @@ -945,6 +945,29 @@ (gethash (leaf-info fun) entry-table) (aver found-p) result)) + ;; KLUDGE: This code duplicates some other code in this + ;; file. In the great reorganzation, the flow of program logic + ;; changed from the original CMUCL model, and that path (as of + ;; sbcl-0.7.5 in SUB-COMPILE-FILE) was no longer followed for + ;; CORE-OBJECTS, leading to BUG 156. This place is + ;; transparently not the right one for this code, but I don't + ;; have a clear enough overview of the compiler to know how to + ;; rearrange it all so that this operation fits in nicely, and + ;; it was blocking reimplementation of + ;; (DECLAIM (INLINE FOO)) (MACROLET ((..)) (DEFUN FOO ...)) + ;; + ;; FIXME: This KLUDGE doesn't solve all the problem in an + ;; ideal way, as (1) definitions typed in at the REPL without + ;; an INLINE declaration will give a NULL + ;; FUNCTION-LAMBDA-EXPRESSION (allowable, but not ideal) and + ;; (2) INLINE declarations will yield a + ;; FUNCTION-LAMBDA-EXPRESSION headed by + ;; SB-C:LAMBDA-WITH-LEXENV, even for null LEXENV. + ;; + ;; CSR, 2002-07-02 + (when (core-object-p *compile-object*) + (fix-core-source-info *source-info* *compile-object*)) + (mapc #'clear-ir1-info components-from-dfo) (clear-stuff))))) diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index 7b4346c..f7e6be0 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -129,3 +129,10 @@ (dotimes (i 14) (when (typep i '(and integer (satisfies oddp))) (print i))) + +;;; bug 156 (reported by APD sbcl-devel 2002-04-12, fixed by CSR patch +;;; sbcl-devel 2002-07-02): FUNCTION-LAMBDA-EXPRESSION of +;;; interactively-compiled functions was broken by sleaziness and +;;; confusion in the assault on 0.7.0, so this expression used to +;;; signal TYPE-ERROR when it found NIL instead of a DEBUG-SOURCE. +(eval '(function-lambda-expression #'(lambda (x) x))) diff --git a/version.lisp-expr b/version.lisp-expr index 500fae4..858a599 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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.7.5.3" +"0.7.5.4" -- 1.7.10.4