Subject: 29.0.50; Tramp autoloads and ordering

From: Stefan Monnier <[email-masked]>
Date: Fri, 11 Nov 2022 09:07:06 -0500

Package: Emacs
Version: 29.0.50

`tramp.el` has the following:

    ;;;###tramp-autoload
    (progn
      (defvar tramp--startup-hook nil
        "Forms to be executed at the end of tramp.el.")
      (put 'tramp--startup-hook 'tramp-suppress-trace t)
    
      (defmacro tramp--with-startup (&rest body)
        "Schedule BODY to be executed at the end of tramp.el."
        `(add-hook 'tramp--startup-hook (lambda () ,@body))))

and then various other Tramp files have autoloaded forms like:

    ;;;###tramp-autoload
    (tramp--with-startup
     (add-to-list 'tramp-methods
      ...))

The problem here is that the resulting `tramp-loaddefs.el` may or may
not be valid depending on the order in which it gets filled, which is
not something that's documented/guaranteed.

        Stefan