]> git.eshelyaron.com Git - emacs.git/commitdiff
Revert "Fix function arity check for noncompiled callees (bug#78685)"
authorMattias EngdegÄrd <mattiase@acm.org>
Mon, 9 Jun 2025 10:55:11 +0000 (12:55 +0200)
committerEshel Yaron <me@eshelyaron.com>
Wed, 18 Jun 2025 08:01:12 +0000 (10:01 +0200)
This reverts commit 8b0f5b05976a99e82e54d6c602d47a8668ccd9d5.

This change wasn't quite right; the solution requires greater care.

(cherry picked from commit 7f6244364b73f0200704708babf6d22367898912)

lisp/emacs-lisp/bytecomp.el
test/lisp/emacs-lisp/bytecomp-tests.el

index 15c55315af5c3ebe4de33a605453c80cc2117d49..74385e79a80e5b80612d3aa5b8bce6573f1980d9 100644 (file)
@@ -1463,7 +1463,10 @@ when printing the error message."
        (let ((fn name))
          (while (and (symbolp fn)
                      (fboundp fn)
-                     (functionp (symbol-function fn)))
+                     (or (symbolp (symbol-function fn))
+                         (consp (symbol-function fn))
+                         (and (not macro-p)
+                              (compiled-function-p (symbol-function fn)))))
            (setq fn (symbol-function fn)))
           (let ((advertised (get-advertised-calling-convention
                              (if (and (symbolp fn) (fboundp fn))
@@ -1475,7 +1478,7 @@ when printing the error message."
               (if macro-p
                   `(macro lambda ,advertised)
                 `(lambda ,advertised)))
-             ((and (not macro-p) (functionp fn)) fn)
+             ((and (not macro-p) (compiled-function-p fn)) fn)
              ((not (consp fn)) nil)
              ((eq 'macro (car fn)) (cdr fn))
              (macro-p nil)
index d1f272f7a4dd5dcda82b3dbf9709eed28b2809dc..8b0c1dad4c03fd49ebee4ff47cea90a9ccc52fac 100644 (file)
@@ -1357,20 +1357,6 @@ byte-compiled.  Run with dynamic binding."
                      (concat ";;; -*-lexical-binding:nil-*-\n" some-code)))
         (should (cookie-warning some-code))))))
 
-(defun bytecomp-tests--f (x y &optional u v) (list x y u v))
-
-(ert-deftest bytecomp-tests--warn-arity-noncompiled-callee ()
-  "Check that calls to non-compiled functions are arity-checked (bug#78685)"
-  (should (not (compiled-function-p (symbol-function 'bytecomp-tests--f))))
-  (let* ((source (concat ";;; -*-lexical-binding:t-*-\n"
-                         "(defun my-fun () (bytecomp-tests--f 11))\n"))
-         (lexical-binding t)
-         (log (bytecomp-tests--log-from-compilation source)))
-    (should (string-search
-             (concat "Warning: `bytecomp-tests--f' called with 1 argument,"
-                     " but requires 2-4")
-             log))))
-
 (ert-deftest bytecomp-tests--unescaped-char-literals ()
   "Check that byte compiling warns about unescaped character
 literals (Bug#20852)."