X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdefboot.lisp;h=978a3c8e067fe7a3f856bf5db0e8782ff22fcf2a;hb=4b58efcd710097cf7cc9b1a1bed8b0e1bd6eb3b8;hp=440fe2d8a2676ce55d06b529169d30595031d070;hpb=ff57884e206ac28660af6af34315bc9b81697f57;p=sbcl.git diff --git a/src/code/defboot.lisp b/src/code/defboot.lisp index 440fe2d..978a3c8 100644 --- a/src/code/defboot.lisp +++ b/src/code/defboot.lisp @@ -105,19 +105,17 @@ ;;;; various sequencing constructs -(defmacro-mundanely prog (varlist &body body-decls) - (multiple-value-bind (body decls) (parse-body body-decls nil) - `(block nil - (let ,varlist - ,@decls - (tagbody ,@body))))) - -(defmacro-mundanely prog* (varlist &body body-decls) - (multiple-value-bind (body decls) (parse-body body-decls nil) - `(block nil - (let* ,varlist - ,@decls - (tagbody ,@body))))) +(flet ((prog-expansion-from-let (varlist body-decls let) + (multiple-value-bind (body decls) + (parse-body body-decls :doc-string-allowed nil) + `(block nil + (,let ,varlist + ,@decls + (tagbody ,@body)))))) + (defmacro-mundanely prog (varlist &body body-decls) + (prog-expansion-from-let varlist body-decls 'let)) + (defmacro-mundanely prog* (varlist &body body-decls) + (prog-expansion-from-let varlist body-decls 'let*))) (defmacro-mundanely prog1 (result &body body) (let ((n-result (gensym))) @@ -305,7 +303,7 @@ ;; environment. We spuriously reference the gratuitous variable, ;; since we don't want to use IGNORABLE on what might be a special ;; var. - (multiple-value-bind (forms decls) (parse-body body nil) + (multiple-value-bind (forms decls) (parse-body body :doc-string-allowed nil) (let ((n-list (gensym))) `(do* ((,n-list ,list (cdr ,n-list))) ((endp ,n-list) @@ -385,7 +383,7 @@ ,n-cond (car *restart-clusters*) ,(if (eq name 'cerror) - `(cerror ,(second expression) ,n-cond) + `(cerror ,(second exp) ,n-cond) `(,name ,n-cond)))) expression)) expression)))