emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r109614: byte-compile-setq-default fi


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r109614: byte-compile-setq-default fix for bug#12195
Date: Tue, 14 Aug 2012 14:23:10 -0400
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 109614
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Tue 2012-08-14 14:23:10 -0400
message:
  byte-compile-setq-default fix for bug#12195
  
  * lisp/emacs-lisp/bytecomp.el (byte-compile-setq-default):
  Optimize away setq-default with no args, as is done for setq.
modified:
  lisp/ChangeLog
  lisp/emacs-lisp/bytecomp.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-08-14 17:10:38 +0000
+++ b/lisp/ChangeLog    2012-08-14 18:23:10 +0000
@@ -1,3 +1,8 @@
+2012-08-14  Glenn Morris  <address@hidden>
+
+       * emacs-lisp/bytecomp.el (byte-compile-setq-default):
+       Optimize away setq-default with no args, as for setq.  (Bug#12195)
+
 2012-08-14  Chong Yidong  <address@hidden>
 
        * minibuffer.el (read-file-name): Doc fix (Bug#10881).

=== modified file 'lisp/emacs-lisp/bytecomp.el'
--- a/lisp/emacs-lisp/bytecomp.el       2012-08-14 15:58:46 +0000
+++ b/lisp/emacs-lisp/bytecomp.el       2012-08-14 18:23:10 +0000
@@ -3578,20 +3578,22 @@
 
 (defun byte-compile-setq-default (form)
   (setq form (cdr form))
-  (if (> (length form) 2)
-      (let ((setters ()))
-        (while (consp form)
-          (push `(setq-default ,(pop form) ,(pop form)) setters))
-        (byte-compile-form (cons 'progn (nreverse setters))))
-    (let ((var (car form)))
-      (and (or (not (symbolp var))
-               (macroexp--const-symbol-p var t))
-           (byte-compile-warning-enabled-p 'constants)
-           (byte-compile-warn
-            "variable assignment to %s `%s'"
-            (if (symbolp var) "constant" "nonvariable")
-            (prin1-to-string var)))
-      (byte-compile-normal-call `(set-default ',var ,@(cdr form))))))
+  (if (null form)                      ; (setq-default), with no arguments
+      (byte-compile-form nil byte-compile--for-effect)
+    (if (> (length form) 2)
+       (let ((setters ()))
+         (while (consp form)
+           (push `(setq-default ,(pop form) ,(pop form)) setters))
+         (byte-compile-form (cons 'progn (nreverse setters))))
+      (let ((var (car form)))
+       (and (or (not (symbolp var))
+                (macroexp--const-symbol-p var t))
+            (byte-compile-warning-enabled-p 'constants)
+            (byte-compile-warn
+             "variable assignment to %s `%s'"
+             (if (symbolp var) "constant" "nonvariable")
+             (prin1-to-string var)))
+       (byte-compile-normal-call `(set-default ',var ,@(cdr form)))))))
 
 (byte-defop-compiler-1 set-default)
 (defun byte-compile-set-default (form)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]