Subject: Re: bug#23648: [PATCH] `defun-declarations-alist' can be unintentionally modified

From: Eli Zaretskii <[email-masked]>
Date: Thu, 21 Jul 2016 17:22:59 +0300

> From: [email-masked]
> Cc: Michael Heerdegen <[email-masked]>,  [email-masked],  [email-masked]
> Date: Wed, 20 Jul 2016 21:09:42 -0400
> 
> > Thanks, but I'm still none the wiser about the questions I asked.
> 
> Hmm, maybe it will be clearer like this:
> 
> Evaluate:
> 
> (macroexpand '(defun foo ()
>                 (declare (indent 1))
>                 nil)) ;=> (prog1 (defalias (quote foo) (function (lambda nil 
> nil))) (function-put (quote foo) (quote lisp-indent-function) (quote 1)))
> 
> This gives the correct result (the (function-put...) part comes from the
> (declare (indent 1))).
> 
> Now perform a completion on a declare clause, e.g., put cursor after
> "ind" and hit C-M-i: (declare (ind)) completes to (declare (indent)).
> 
> Now evaluate the same expression as before:
> 
> (macroexpand '(defun foo ()
>                 (declare (indent 1))
>                 nil)) ;=> (prog1 (defalias (quote foo) (function (lambda nil 
> nil))) "Warning: Unknown defun property ‘indent’ in foo")
> 
> This give the wrong result, the (declare (indent 1)) is giving the
> "Warning:...".  Emacs has unlearned the indent declaration.  In fact it
> unlearned all the declarations for defun except for gv-setter, you can
> see this by looking at defun-declarations-alist's value.

Thanks, but I think we are mis-communicating.  What I need is not a
demonstration of the bug in action; I already got that.  What I asked
for is different:

> How probable is the situation where this problem pops up?  And when
> was the bug introduced?

You already answered the second question.  For the first, I expected
to see something done frequently by either users or Lisp programs,
which bumps into this bug.  Evaluating macroexpand, twice, with
completion in-between, doesn't qualify in my book as a frequent user
action, I hope you will agree (even if you personally happen to use it
quite a lot).

So I'm still looking for the answer to the "how probable" question.  I
need that to make up my mind about the urgency of the fix.

Thanks.