From: Noam Postavsky Date: Fri, 31 May 2019 12:24:56 +0000 (-0400) Subject: Allow macros autoloaded as functions during bytecomp (Bug#36022) X-Git-Tag: emacs-26.2.90~27 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2860285621eb890697ca122cd6ede8c3f03566d6;p=emacs.git Allow macros autoloaded as functions during bytecomp (Bug#36022) * lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't pass symbols which don't have a known definition to byte-compile--function-signature, it fails to compile code which previously compiled successfully (for example, gnus.el until 2019-06-01 "* lisp/gnus/gnus.el: Mark autoloaded macros as such" which autoloads some macros as if they were functions). --- diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 72e81a653c7..e3b34c189f6 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1379,7 +1379,9 @@ when printing the error message." (defun byte-compile-callargs-warn (form) (let* ((def (or (byte-compile-fdefinition (car form) nil) (byte-compile-fdefinition (car form) t))) - (sig (byte-compile--function-signature (or def (car form)))) + (sig (cond (def (byte-compile--function-signature def)) + ((subrp (symbol-function (car form))) + (subr-arity (symbol-function (car form)))))) (ncall (length (cdr form)))) ;; Check many or unevalled from subr-arity. (if (and (cdr-safe sig)