X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdefboot.lisp;h=2379081aada5f6ae40a24a599d7f378a8cf082be;hb=4f2091cda26c2f3004a31704910344bce3288eea;hp=440fe2d8a2676ce55d06b529169d30595031d070;hpb=ff57884e206ac28660af6af34315bc9b81697f57;p=sbcl.git diff --git a/src/code/defboot.lisp b/src/code/defboot.lisp index 440fe2d..2379081 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)