]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't ignore lexically-bound variables in a defvar (bug#46912)
authorPip Cet <pipcet@gmail.com>
Thu, 4 Mar 2021 21:06:13 +0000 (21:06 +0000)
committerPip Cet <pipcet@gmail.com>
Fri, 5 Mar 2021 09:14:59 +0000 (09:14 +0000)
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Walk
the value form of a defvar.

lisp/emacs-lisp/byte-opt.el

index b51ba801552d6d341d216da05fe4dabe939a325d..b3325816c5c973bdcc92ffae86d8528b23b0ebba 100644 (file)
@@ -607,9 +607,12 @@ Same format as `byte-optimize--lexvars', with shared structure and contents.")
            (setq args (cddr args)))
          (cons fn (nreverse var-expr-list))))
 
-      (`(defvar ,(and (pred symbolp) name) . ,_)
-       (push name byte-optimize--dynamic-vars)
-       form)
+      (`(defvar ,(and (pred symbolp) name) . ,rest)
+       (let ((optimized-rest (and rest
+                                  (cons (byte-optimize-form (car rest) nil)
+                                        (cdr rest)))))
+         (push name byte-optimize--dynamic-vars)
+         `(defvar ,name . ,optimized-rest)))
 
       (`(,(pred byte-code-function-p) . ,exps)
        (cons fn (mapcar #'byte-optimize-form exps)))