From: Christophe Rhodes Date: Sat, 15 Nov 2003 15:21:00 +0000 (+0000) Subject: 0.8.5.38: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=6de1a3e9a75dcf54c6db2d5768afb8e41266a207;p=sbcl.git 0.8.5.38: Fix PFDtest HANDLER-CASE.28 ... wrap in LOCALLY --- diff --git a/NEWS b/NEWS index c14cbad..884d56b 100644 --- a/NEWS +++ b/NEWS @@ -2189,6 +2189,8 @@ changes in sbcl-0.8.6 relative to sbcl-0.8.5: ** implementation of ASH-MOD32 on X86 did not work for the shift greater than 32. ** FLUSH-DEST did not mark blocks for type check regeneration. + ** HANDLER-CASE failed to accept declarations in handler clauses + in some circumstances. planned incompatible changes in 0.8.x: * (not done yet, but planned:) When the profiling interface settles diff --git a/src/code/defboot.lisp b/src/code/defboot.lisp index f05fb0a..149997f 100644 --- a/src/code/defboot.lisp +++ b/src/code/defboot.lisp @@ -584,10 +584,8 @@ `(let ((,(caaddr annotated-case) ,var)) ,@body)) - ((not (cdr body)) - (car body)) (t - `(progn ,@body))))))) + `(locally ,@body))))))) annotated-cases)))))))) ;;;; miscellaneous diff --git a/tests/condition.pure.lisp b/tests/condition.pure.lisp index cf6bb96..f594e99 100644 --- a/tests/condition.pure.lisp +++ b/tests/condition.pure.lisp @@ -101,3 +101,8 @@ :failed))))) (cerror (formatter "Continue from ~A") "bug ~A" :bug))) :passed)) + +;;; clauses in HANDLER-CASE are allowed to have declarations (and +;;; indeed, only declarations) +(assert + (null (handler-case (error "foo") (error () (declare (optimize speed)))))) diff --git a/version.lisp-expr b/version.lisp-expr index f4b1d15..223a313 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; 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".) -"0.8.5.37" +"0.8.5.38"