]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow macros autoloaded as functions during bytecomp (Bug#36022)
authorNoam Postavsky <npostavs@gmail.com>
Fri, 31 May 2019 12:24:56 +0000 (08:24 -0400)
committerNoam Postavsky <npostavs@gmail.com>
Sat, 1 Jun 2019 21:48:43 +0000 (17:48 -0400)
* 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).

lisp/emacs-lisp/bytecomp.el

index 72e81a653c70f4b91b7222310fd75f0ede690d64..e3b34c189f6c21eb90ec85ff0954266dd37e6f0a 100644 (file)
@@ -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)