summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2015-01-30 16:00:29 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2015-01-30 16:00:29 -0500
commitd5e3922e08587e7eb9e5aec2e9f84cbda405f857 (patch)
tree6ab951b35a3ee24d7b5248e214500ece03ae0044
parentadebc14b9c1794e49cfab9b3f2c4866acfbdf175 (diff)
downloademacs-d5e3922e08587e7eb9e5aec2e9f84cbda405f857.tar.gz
* lisp/emacs-lisp/backquote.el: Fix bug with unoptimized exp.
Fixes: debbugs:19734 * lisp/emacs-lisp/backquote.el (backquote-delay-process): Don't reuse `s' since it may be "equivalent" in some sense, yet different. * test/automated/core-elisp-tests.el (core-elisp-tests-3-backquote): New test.
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/emacs-lisp/backquote.el4
-rw-r--r--test/ChangeLog4
-rw-r--r--test/automated/core-elisp-tests.el7
4 files changed, 15 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index eac2e44ee5a..3724388dfda 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/backquote.el (backquote-delay-process): Don't reuse `s'
+ since it may be "equivalent" in some sense, yet different (bug#19734).
+
2015-01-30 Oleh Krehel <ohwoeowho@gmail.com>
* outline.el (outline-font-lock-face): Add docstring.
diff --git a/lisp/emacs-lisp/backquote.el b/lisp/emacs-lisp/backquote.el
index 082955e0823..d5cdca2b1b5 100644
--- a/lisp/emacs-lisp/backquote.el
+++ b/lisp/emacs-lisp/backquote.el
@@ -120,9 +120,7 @@ Vectors work just like lists. Nested backquotes are permitted."
This simply recurses through the body."
(let ((exp (backquote-listify (list (cons 0 (list 'quote (car s))))
(backquote-process (cdr s) level))))
- (if (eq (car-safe exp) 'quote)
- (cons 0 (list 'quote s))
- (cons 1 exp))))
+ (cons (if (eq (car-safe exp) 'quote) 0 1) exp)))
(defun backquote-process (s &optional level)
"Process the body of a backquote.
diff --git a/test/ChangeLog b/test/ChangeLog
index 3ae980755a9..8e4fdb884a1 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,7 @@
+2015-01-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * automated/core-elisp-tests.el (core-elisp-tests-3-backquote): New test.
+
2015-01-28 Fabián Ezequiel Gallina <fgallina@gnu.org>
* automated/python-tests.el (python-indent-pep8-1)
diff --git a/test/automated/core-elisp-tests.el b/test/automated/core-elisp-tests.el
index 1b76c767b95..c31ecef4a32 100644
--- a/test/automated/core-elisp-tests.el
+++ b/test/automated/core-elisp-tests.el
@@ -24,7 +24,7 @@
;;; Code:
-(ert-deftest core-elisp-tests ()
+(ert-deftest core-elisp-tests-1-defvar-in-let ()
"Test some core Elisp rules."
(with-temp-buffer
;; Check that when defvar is run within a let-binding, the toplevel default
@@ -36,7 +36,7 @@
c-e-x)
'(1 2)))))
-(ert-deftest core-elisp-test-window-configurations ()
+(ert-deftest core-elisp-tests-2-window-configurations ()
"Test properties of window-configurations."
(let ((wc (current-window-configuration)))
(with-current-buffer (window-buffer (frame-selected-window))
@@ -45,5 +45,8 @@
(set-window-configuration wc)
(should (or (not mark-active) (mark)))))
+(ert-deftest core-elisp-tests-3-backquote ()
+ (should (eq 3 (eval ``,,'(+ 1 2)))))
+
(provide 'core-elisp-tests)
;;; core-elisp-tests.el ends here