diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2015-01-30 16:00:29 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2015-01-30 16:00:29 -0500 |
commit | d5e3922e08587e7eb9e5aec2e9f84cbda405f857 (patch) | |
tree | 6ab951b35a3ee24d7b5248e214500ece03ae0044 | |
parent | adebc14b9c1794e49cfab9b3f2c4866acfbdf175 (diff) |
* 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/ChangeLog | 5 | ||||
-rw-r--r-- | lisp/emacs-lisp/backquote.el | 4 | ||||
-rw-r--r-- | test/ChangeLog | 4 | ||||
-rw-r--r-- | test/automated/core-elisp-tests.el | 7 |
4 files changed, 15 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index eac2e44ee5..3724388dfd 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 082955e082..d5cdca2b1b 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 3ae980755a..8e4fdb884a 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 1b76c767b9..c31ecef4a3 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 |