Allow suppressing messages about the wrong number of arguments

* lisp/emacs-lisp/byte-run.el (with-suppressed-warnings): Add
`wrong-args'.
* lisp/emacs-lisp/bytecomp.el (byte-compile-emit-callargs-warn)
(byte-compile-subr-wrong-args): Allow suppressing wrong number of
arguments.
This commit is contained in:
Lars Ingebrigtsen 2022-05-22 20:06:24 +02:00
parent b2a5bf142f
commit a0524584e9
2 changed files with 18 additions and 16 deletions

View file

@ -637,7 +637,7 @@ The warnings that can be suppressed are a subset of the warnings
in `byte-compile-warning-types'; see the variable
`byte-compile-warnings' for a fuller explanation of the warning
types. The types that can be suppressed with this macro are
`free-vars', `callargs', `redefine', `obsolete',
`free-vars', `callargs', `redefine', `obsolete', `wrong-args',
`interactive-only', `lexical', `mapcar', `constants' and
`suspicious'.

View file

@ -1494,15 +1494,16 @@ when printing the error message."
byte-compile-unresolved-functions)))))
(defun byte-compile-emit-callargs-warn (name actual-args min-args max-args)
(byte-compile-warn-x
name
"%s called with %d argument%s, but %s %s"
name actual-args
(if (= 1 actual-args) "" "s")
(if (< actual-args min-args)
"requires"
"accepts only")
(byte-compile-arglist-signature-string (cons min-args max-args))))
(when (byte-compile-warning-enabled-p 'wrong-args name)
(byte-compile-warn-x
name
"`%s' called with %d argument%s, but %s %s"
name actual-args
(if (= 1 actual-args) "" "s")
(if (< actual-args min-args)
"requires"
"accepts only")
(byte-compile-arglist-signature-string (cons min-args max-args)))))
(defun byte-compile--check-arity-bytecode (form bytecode)
"Check that the call in FORM matches that allowed by BYTECODE."
@ -3838,12 +3839,13 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\""
(defun byte-compile-subr-wrong-args (form n)
(byte-compile-warn-x (car form)
"`%s' called with %d arg%s, but requires %s"
(car form) (length (cdr form))
(if (= 1 (length (cdr form))) "" "s") n)
;; Get run-time wrong-number-of-args error.
(byte-compile-normal-call form))
(when (byte-compile-warning-enabled-p 'wrong-args (car form))
(byte-compile-warn-x (car form)
"`%s' called with %d arg%s, but requires %s"
(car form) (length (cdr form))
(if (= 1 (length (cdr form))) "" "s") n)
;; Get run-time wrong-number-of-args error.
(byte-compile-normal-call form)))
(defun byte-compile-no-args (form)
(if (not (= (length form) 1))