diff options
author | Alan Mackenzie <acm@muc.de> | 2015-11-29 16:17:07 +0000 |
---|---|---|
committer | Alan Mackenzie <acm@muc.de> | 2015-11-29 16:17:07 +0000 |
commit | 5cf012a3a86e700b5f229fc14d9abd1e27fdb5f4 (patch) | |
tree | 007fed106f1882801496e684bba53ed8e6ebb65a /lisp/emacs-lisp/bytecomp.el | |
parent | ca6edca2429c01dd7905c0de835bbdb23754b754 (diff) | |
download | emacs-5cf012a3a86e700b5f229fc14d9abd1e27fdb5f4.tar.gz emacs-5cf012a3a86e700b5f229fc14d9abd1e27fdb5f4.tar.bz2 emacs-5cf012a3a86e700b5f229fc14d9abd1e27fdb5f4.zip |
Byte compiler: Catch missing argument to `funcall'. Fixes bug#22051.
* lisp/emacs-lisp/bytecomp.el (byte-compile-funcall): When there's no argument
to `funcall', (i) Output an error message; (ii) Generate code to signal a
`wrong-number-of-arguments' error.
Diffstat (limited to 'lisp/emacs-lisp/bytecomp.el')
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 8fd2594fec8..14173494eeb 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -4013,8 +4013,13 @@ that suppresses all warnings during execution of BODY." (setq byte-compile--for-effect nil))) (defun byte-compile-funcall (form) - (mapc 'byte-compile-form (cdr form)) - (byte-compile-out 'byte-call (length (cdr (cdr form))))) + (if (cdr form) + (progn + (mapc 'byte-compile-form (cdr form)) + (byte-compile-out 'byte-call (length (cdr (cdr form))))) + (byte-compile-log-warning "`funcall' called with no arguments" nil :error) + (byte-compile-form '(signal 'wrong-number-of-arguments '(funcall 0)) + byte-compile--for-effect))) ;; let binding |