Warn about wrong number of args for subrs (Bug#35767)
* lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't assume byte-compile-fdefinition will return non-nil. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-warn-wrong-args) (bytecomp-warn-wrong-args-subr): New tests.
This commit is contained in:
parent
5f01af6c8e
commit
134edc1036
2 changed files with 15 additions and 1 deletions
|
@ -1379,7 +1379,7 @@ 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 def))
|
||||
(sig (byte-compile--function-signature (or def (car form))))
|
||||
(ncall (length (cdr form))))
|
||||
;; Check many or unevalled from subr-arity.
|
||||
(if (and (cdr-safe sig)
|
||||
|
|
|
@ -438,6 +438,20 @@ Subtests signal errors if something goes wrong."
|
|||
;; Should not warn that mt--test2 is not known to be defined.
|
||||
(should-not (re-search-forward "my--test2" nil t))))
|
||||
|
||||
(ert-deftest bytecomp-warn-wrong-args ()
|
||||
(with-current-buffer (get-buffer-create "*Compile-Log*")
|
||||
(let ((inhibit-read-only t)) (erase-buffer))
|
||||
(byte-compile '(remq 1 2 3))
|
||||
(ert-info ((buffer-string) :prefix "buffer: ")
|
||||
(should (re-search-forward "remq.*3.*2")))))
|
||||
|
||||
(ert-deftest bytecomp-warn-wrong-args-subr ()
|
||||
(with-current-buffer (get-buffer-create "*Compile-Log*")
|
||||
(let ((inhibit-read-only t)) (erase-buffer))
|
||||
(byte-compile '(safe-length 1 2 3))
|
||||
(ert-info ((buffer-string) :prefix "buffer: ")
|
||||
(should (re-search-forward "safe-length.*3.*1")))))
|
||||
|
||||
(ert-deftest test-eager-load-macro-expansion ()
|
||||
(test-byte-comp-compile-and-load nil
|
||||
'(progn (defmacro abc (arg) 1) (defun def () (abc 2))))
|
||||
|
|
Loading…
Add table
Reference in a new issue