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.
This commit is contained in:
parent
ca6edca242
commit
5cf012a3a8
1 changed files with 7 additions and 2 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue