Subject: Re: bug#66136: 29.1; byte-compiler reports "misplaced interactive spec" with empty fct in lexical environment

From: Jens Schmidt <[email-masked]>
Date: Thu, 21 Sep 2023 23:39:47 +0200

Found the issue I think:

-------------------- bad case --------------------
(macroexp-parse-body '("Allows interactive calls." (interactive "^P")))

=>

(("Allows interactive calls.")
 (interactive "^P"))
-------------------- bad case --------------------

-------------------- good case --------------------
(macroexp-parse-body '("Allows interactive calls." (interactive "^P") nil))

=>

(("Allows interactive calls." (interactive "^P"))
 nil)
-------------------- good case --------------------

That is, macroexp-parse-body does not consider the case that a body can
consist of declarations only and, if this is the case, puts the last
declaration into the body forms.

Could provide a patch if somebody confirms that this is really the root
cause of this issue.  Yet on the other hand this is pretty deep elisp,
so if somebody else steps forward, I'll be glad as well.