GNU bug report logs -
#66136
29.1; byte-compiler reports "misplaced interactive spec" with empty fct in lexical environment
Previous Next
Full log
Message #17 received at 66136 <at> debbugs.gnu.org (full text, mbox):
>> Date: Thu, 21 Sep 2023 23:39:47 +0200
>> From: Jens Schmidt via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>>
>> 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.
>
> Adding Stefan, in case he has comments/suggestions.
I'm in favor of requiring *something* after the declarations.
So yes, the first case above is a bug and should be fixed, but rather
than return
(("Allows interactive calls." (interactive "^P"))
nil)
I think it should return something like
(("Allows interactive calls." (interactive "^P"))
,(macroexp-warn-and-return "Missing body" ...))
-- Stefan
This bug report was last modified 1 year and 300 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.