Subject: bug#71120: 29.3; buglet in cl-loop

From: Stefan Monnier <[email-masked]>
Date: Wed, 29 May 2024 21:45:26 -0400

>>   (let* ((<fresh-variable> 1) (--cl-var-- nil))
>>     (while (<= <fresh-variable> 100)
>>       (let ((_i <fresh-variable>))
>> 	(setq --cl-var-- (cons (random 6) --cl-var--))
>> 	(setq <fresh-variable> (+ <fresh-variable> 1))))
>>     (nreverse --cl-var--))
>>
>> I have added Mattias and Stefan to the CCs, as they'll probably have
>> more qualified comments to add.

Not really: There's a similar problem with `cl-destructuring-bind` and
similarly, when I started to look at the corresponding code I quickly
gave up.

At least for `cl-destructuring-bind` I think I understand the intended
behavior well enough that I might be able to implement code which
behaves as we want (tho I don't know how to *modify* the existing code
to reach that stage).

In the case of `cl-loop` the intended behavior is much too complex for
my poor head, so I don't think I'd be able to decide whether it does the
right thing for all cases.

        Stefan