I also figured out what the `(progn ... t)` pattern does. Here's a macroexpansion w/ it:
(macroexpand-1 '(cl-loop for i in '(1 2 3) collect i))
(cl-block nil
(let*
((--cl-var--
'(1 2 3))
(i nil)
(--cl-var-- nil))
(while
(consp --cl-var--)
(setq i
(car --cl-var--))
(push i --cl-var--)
(setq --cl-var--
(cdr --cl-var--)))
(nreverse --cl-var--)))
And one w/out it:
(macroexpand-1 '(cl-loop for i in '(1 2 3) collect i))
(cl-block nil
(let*
((--cl-var--
'(1 2 3))
(i nil)
(--cl-var-- nil))
(while
(and
(consp --cl-var--)
(progn
(setq i
(car --cl-var--))
(push i --cl-var--)))
(setq --cl-var--
(cdr --cl-var--)))
(nreverse --cl-var--)))