X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmacros.lisp;h=fd533a0951ae120d3d0f6c7a0fe2a8f7b1c83548;hb=a41b3abd325afaabf14e444ad516c3e9833c3883;hp=1dd4bbc70415ec8f4f61fd3fe0f1b4cf8547d778;hpb=05525d3a5906d7a89fcb689c26177732493c40ce;p=sbcl.git diff --git a/src/compiler/macros.lisp b/src/compiler/macros.lisp index 1dd4bbc..fd533a0 100644 --- a/src/compiler/macros.lisp +++ b/src/compiler/macros.lisp @@ -54,7 +54,8 @@ (multiple-value-bind (body decls doc) (parse-defmacro lambda-list n-form body name "special form" :environment n-env - :error-fun 'convert-condition-into-compiler-error) + :error-fun 'convert-condition-into-compiler-error + :wrap-block nil) `(progn (declaim (ftype (function (continuation continuation t) (values)) ,fn-name)) @@ -110,7 +111,8 @@ :error-fun `(lambda (&rest stuff) (declare (ignore stuff)) (return-from ,name - (values nil t)))) + (values nil t))) + :wrap-block nil) `(lambda (,n-form &aux (,n-env *lexenv*)) ,@decls (block ,name @@ -616,7 +618,8 @@ (declare (type node ,node-var)) ,@body (when ,(if restart-p - `(eq ,node-var (block-last ,n-block)) + `(or (eq ,node-var (block-last ,n-block)) + (block-delete-p ,n-block)) `(eq ,cont-var ,n-last-cont)) (return nil)))))) ;;; like DO-NODES, only iterating in reverse order