@@ -884,9 +884,16 @@ collected result will be returned as the value of the LOOP."
884
884
(defun loop-construct-return (form)
885
885
` (return-from , (car *loop-names* ) , form))
886
886
887
+ (defun loop-pseudo-body (form)
888
+ (cond ((or *loop-emitted-body* *loop-inside-conditional* )
889
+ (push form *loop-body* ))
890
+ (t
891
+ (push form *loop-before-loop* )
892
+ (push form *loop-after-body* ))))
893
+
887
894
(defun loop-emit-body (form)
888
895
(setq *loop-emitted-body* t )
889
- (push form * loop-body* ))
896
+ (loop-pseudo- body form ))
890
897
891
898
(defun loop-emit-final-value (&optional (form nil form-supplied-p))
892
899
(when form-supplied-p
@@ -1122,7 +1129,7 @@ collected result will be returned as the value of the LOOP."
1122
1129
(when (loop-tequal (car *loop-source-code* ) :end )
1123
1130
(loop-pop-source))
1124
1131
(when it-p (setq form ` (setq , it-p , form)))
1125
- (loop-emit -body
1132
+ (loop-pseudo -body
1126
1133
` (if , (if negatep ` (not , form) form)
1127
1134
, then
1128
1135
,@ else))))))
@@ -1296,7 +1303,9 @@ collected result will be returned as the value of the LOOP."
1296
1303
1297
1304
(defun loop-do-while (negate kwd &aux (form (loop-get-form)))
1298
1305
(loop-disallow-conditional kwd)
1299
- (loop-emit-body ` (, (if negate ' when ' unless) , form (go end-loop))))
1306
+ (loop-pseudo-body ` (, (if negate ' when ' unless)
1307
+ , form
1308
+ (go end-loop))))
1300
1309
1301
1310
1302
1311
(defun loop-do-with ()
0 commit comments