* Don't throw them away, that is.
Fixes launchpad bug #524707
stack frame thrown from.
* bug fix: Fix compiler error involving MAKE-ARRAY and IF forms
in :INITIAL-CONTENTS. (lp#523612)
+ * bug fix: FUNCTION-LAMBDA-EXPRESSION lost declarations from interpreted
+ functions. (lp#524707)
changes in sbcl-1.0.36 relative to sbcl-1.0.35:
* new feature: SB-EXT:TYPEXPAND-1, SB-EXT:TYPEXPAND, and
"INTERPRETED-FUNCTION-DEBUG-NAME"
"INTERPRETED-FUNCTION-LAMBDA-LIST"
"INTERPRETED-FUNCTION-DEBUG-LAMBDA-LIST"
+ "INTERPRETED-FUNCTION-DECLARATIONS"
"INTERPRETED-FUNCTION-DOCUMENTATION"
"INTERPRETED-FUNCTION-BODY"
"INTERPRETED-FUNCTION-SOURCE-LOCATION"
(sb!eval:interpreted-function
(let ((name (sb!eval:interpreted-function-name fun))
(lambda-list (sb!eval:interpreted-function-lambda-list fun))
+ (declarations (sb!eval:interpreted-function-declarations fun))
(body (sb!eval:interpreted-function-body fun)))
- (values `(lambda ,lambda-list ,@body)
+ (values `(lambda ,lambda-list
+ ,@(when declarations `((declare ,@declarations)))
+ ,@body)
t name)))
(function
(let* ((fun (%simple-fun-self (%fun-fun fun)))
(simple-type-error () 'error)))
t)))
+(with-test (:name :bug-524707)
+ (let ((*evaluator-mode* :interpret)
+ (lambda-form '(lambda (x) (declare (fixnum x)) (1+ x))))
+ (let ((fun (eval lambda-form)))
+ (assert (equal lambda-form (function-lambda-expression fun))))))
+
;;; success
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.36.2"
+"1.0.36.3"