Subject: bug#56292: 29.0.50; Compilation failure since recent loaddefs speed up

From: Sean Whitton <[email-masked]>
Date: Thu, 30 Jun 2022 11:16:32 -0700

retitle 56292 29.0.50; Problem with define-obsolete-function-alias in loaddefs.el
thanks

On Thu 30 Jun 2022 at 11:15am +02, Lars Ingebrigtsen wrote:

> Normal errors should give you a backtrace by default in --batch, but I
> guess whatever is generating the message here is catching the error.
> Try perhaps (setq debug-on-signal t) and see whether that gives a
> backtrace?

Thanks, I eventually managed to get some useful output.

After 1d4e903417, before time-date is loaded, (get 'subtract-time
'byte-obsolete-info) yields (time-subtract nil 0).  Previously, whether
or not time-date was loaded, it yielded (time-substract nil "26.1").
The wrong-type-argument is when macroexp--obsolete-warning tries to pass
0 as an argument to concat.

If you replace

    (define-obsolete-function-alias 'subtract-time 'time-subtract "\
26.1")

with

    (define-obsolete-function-alias 'subtract-time 'time-subtract "26.1")

in loaddefs.el then the problem goes away.  I hacked loadup.el and
determined that when loadup.el is loading loaddefs.el,

    (macroexpand-1
     '(define-obsolete-function-alias 'subtract-time 'time-subtract "\
26.1"))

yields

(progn (defalias 'subtract-time 'time-subtract nil)
       (make-obsolete 'subtract-time 'time-subtract 0))

which is not the correct expansion according to the definition of
define-obsolete-function-alias ..

-- 
Sean Whitton