Subject: bug#20457: compiler does not warn about arglist mismatch with obsolete alias

From: Stefan Monnier <[email-masked]>
Date: Sat, 05 Jun 2021 11:54:35 -0400

>> The problem seems to be more general than that -- it doesn't warn about
>> the wrong number of arguments, ever, if using aliases?
>> 
>> Test case:
>> 
>> (defun foo ())
>> (defalias 'bar 'foo)
>> (defun zot ()
>>   (bar t))
>> (defun foobar ()
>>   (foo t))
>>
>>
>> ----
>> Compiling file /tmp/warn.el at Fri May 28 02:26:55 2021
>> 
>> In foobar:
>> warn.el:6:4: Warning: foo called with 1 argument, but accepts only 0
>> ----
>> 
>> Note -- no warning from the zot function.
>> 
>> It seems so odd that nobody has pointed this out before, so I'm
>> wondering if I'm just doing something obviously wrong in this test
>> case.  Anybody?
>
> Stefan?

The byte-compiler's tracking of functions arity is quite limited, yes.
Patches to improve it are welcome.

        Stefan