Subject: bug#58396: 29.0.50; Optimization failure for add-to-list

From: Stefan Monnier <[email-masked]>
Date: Mon, 10 Oct 2022 23:46:46 -0400

Lars Ingebrigtsen [2022-10-11 02:28:40] wrote:
> Stefan Monnier <[email-masked]> writes:
>> I'm not sure which part you don't understand above, so I'll only explain
>> the general situation: to allow completion of local variable names, we
>> analyze the surrounding code, but in order to do that without having to
>> write ad-hoc code that knows about all the macros out there that can
>> introduce new vars, we take the "surrounding code" and macroexpand the
>> hell out of it so that we can then traverse the result looking only for
>> `let/let*/lambda/condition-case`.
>
> But why is it calling add-to-list--anon-cmacro with the wrong number of
> parameters?

Because that's the sort of error you can get if you try to macro-expand
code that's syntactically invalid.  E.g. try to compile a file with

    (add-to-list x)

and you should see a similar error.  For `elisp--local-variables`,
syntactically invalid code is the normal case (more or less) both
because it's used when we're in the middle of writing the code, and also
because of how it works (it takes the code from beginning-of-defun up
to point and throws away whatever follows, just adding enough closing
parens that the resutling string is `read`able).

        Stefan