Subject: bug#79353: 31.0.50; Eager macro expansion errors when building master

From: "J.D. Smith" <[email-masked]>
Date: Sun, 31 Aug 2025 21:18:12 -0400

Stefan Monnier <[email-masked]> writes:

>> 2. During initial autoload generation, this macro is unknown.  So the
>> file tramp-adb.el is /loaded/, to give it a chance to define the macro.
>>
>> 3. The macro `tramp--with-startup' is indeed defined in tramp.el, which
>> tramp-adb requires.  So far so good.  But during the loading of
>> tramp.el, some other package it loads uses `cl-subseq' at the top level
>> without first requiring cl-extra.
>>
>> 5. Why has this not been an issue before?  The macro `cl-subseq' is
>> /itself/ an autoload in cl-extra.el.  Since the CL-specific loadefs file
>> `cl-loaddefs.el' does not yet exist (remember this is during autoload
>> generation), this causes the (handled) warning you see.
>
> FWIW it sounds like a problem I've seen before in other circumstances
> where I just added a `(require 'cl-extra)`, e.g.:
>
>     lisp/emacs-lisp/comp-cstr.el:(require 'cl-extra) ;HACK: For `cl-find-class' when `cl-loaddefs' is missing.

Interesting.  `tramp.el' could probably just (require 'cl-extra) to fix
this.  I guess this is a new use of this cl-extra macro somewhere, which
wasn't caught in testing.