Subject: Re: bug#65017: 29.1; Byte compiler interaction with cl-lib function objects, removes symbol-function

From: Alan Mackenzie <[email-masked]>
Date: Thu, 3 Aug 2023 18:22:30 +0000

Hello, Stefan.

On Thu, Aug 03, 2023 at 13:30:43 -0400, Stefan Monnier wrote:
> > As I suggested in my other post, it might be a "simple" problem of cache
> > invalidation.  Why is the value from the first compilation hanging around
> > until the second one?

> That's a side problem.  If absolutely needed, we could add some ad-hoc
> invalidation to work around the core problem, but I'd rather fix the
> core problem.

Are you sure?  What is the core problem?

As I see it, if the function cl--labels-convert is called during byte
compilation, cl--labels-convert-cache is going to get symbols with
position.  This is expected and is what we want - such a symbol might
easily give the position element of an error occurring in expanded code.

What we don't want is this symbol with position hanging around after the
end of the byte compilation that gives it its context.  If I understood
your other, explaining, post right, cl--labels-convert-cache is only
valid within a particular invocation of cl-flet or cl-labels.  So why
would it not be a complete bug fix to initialise this variable to nil at
the start of every cl-flet or cl-labels?  Or, more likely, bind the
variable to nil, to allow it to function better in nested invocations of
either of these macros?

What am I missing, here?

>         Stefan

-- 
Alan Mackenzie (Nuremberg, Germany).