]> git.eshelyaron.com Git - emacs.git/commitdiff
Move malformed-function warning from byte-opt to cconv (bug#67483)
authorMattias Engdegård <mattiase@acm.org>
Wed, 29 Nov 2023 16:51:46 +0000 (17:51 +0100)
committerMattias Engdegård <mattiase@acm.org>
Thu, 30 Nov 2023 10:31:09 +0000 (11:31 +0100)
We shouldn't be warning inside the optimiser in the first place.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-form):
Remove byte-compile-form-stack manipulation.
(byte-optimize-form-code-walker): Move malformed function warning
from here...
* lisp/emacs-lisp/cconv.el: ...to here.

lisp/emacs-lisp/byte-opt.el
lisp/emacs-lisp/cconv.el

index 06257a9a2dab9d163282a3abc23040893383724c..7a61a8fce7e0aef19a40e8da75609a75cf6b2b31 100644 (file)
@@ -485,10 +485,6 @@ There can be multiple entries for the same NAME if it has several aliases.")
       (`(,(pred byte-code-function-p) . ,exps)
        (cons fn (mapcar #'byte-optimize-form exps)))
 
-      (`(,(pred (not symbolp)) . ,_)
-       (byte-compile-warn-x form "`%s' is a malformed function" fn)
-       form)
-
       ((guard (when for-effect
                (if-let ((tmp (byte-opt--fget fn 'side-effect-free)))
                    (or byte-compile-delete-errors
@@ -514,7 +510,6 @@ There can be multiple entries for the same NAME if it has several aliases.")
     (byte-optimize-form form for-effect)))
 
 (defun byte-optimize-form (form &optional for-effect)
-  (push form byte-compile-form-stack)
   (while
       (progn
         ;; First, optimize all sub-forms of this one.
@@ -531,7 +526,6 @@ There can be multiple entries for the same NAME if it has several aliases.")
                      (byte-compile-log "  %s\t==>\t%s" old new)
                       (setq form new)
                       (not (eq new old))))))))
-  (pop byte-compile-form-stack)
   form)
 
 (defun byte-optimize--rename-var-body (var new-var body)
index 3e75020a0135d9dbf00fe4112f2a4d4bbc21af66..e65c39e3998af218773824682b4cbffb49178fda 100644 (file)
@@ -615,11 +615,15 @@ places where they originally did not directly appear."
      (cconv-convert exp env extend))
 
     (`(,func . ,forms)
-     ;; First element is function or whatever function-like forms are: or, and,
-     ;; if, catch, progn, prog1, while, until
-     `(,func . ,(mapcar (lambda (form)
-                          (cconv-convert form env extend))
-                        forms)))
+     (if (symbolp func)
+         ;; First element is function or whatever function-like forms are:
+         ;; or, and, if, catch, progn, prog1, while, until
+         `(,func . ,(mapcar (lambda (form)
+                              (cconv-convert form env extend))
+                            forms))
+       (macroexp--warn-wrap form (format-message "Malformed function `%S'"
+                                                 (car form))
+                            nil nil)))
 
     (_ (or (cdr (assq form env)) form))))