diff options
| author | Stefan Monnier | 2015-01-30 16:00:29 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2015-01-30 16:00:29 -0500 |
| commit | d5e3922e08587e7eb9e5aec2e9f84cbda405f857 (patch) | |
| tree | 6ab951b35a3ee24d7b5248e214500ece03ae0044 | |
| parent | adebc14b9c1794e49cfab9b3f2c4866acfbdf175 (diff) | |
| download | emacs-d5e3922e08587e7eb9e5aec2e9f84cbda405f857.tar.gz emacs-d5e3922e08587e7eb9e5aec2e9f84cbda405f857.zip | |
* 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 eac2e44ee5a..3724388dfda 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2015-01-30 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * emacs-lisp/backquote.el (backquote-delay-process): Don't reuse `s' | ||
| 4 | since it may be "equivalent" in some sense, yet different (bug#19734). | ||
| 5 | |||
| 1 | 2015-01-30 Oleh Krehel <ohwoeowho@gmail.com> | 6 | 2015-01-30 Oleh Krehel <ohwoeowho@gmail.com> |
| 2 | 7 | ||
| 3 | * outline.el (outline-font-lock-face): Add docstring. | 8 | * 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." | |||
| 120 | This simply recurses through the body." | 120 | This simply recurses through the body." |
| 121 | (let ((exp (backquote-listify (list (cons 0 (list 'quote (car s)))) | 121 | (let ((exp (backquote-listify (list (cons 0 (list 'quote (car s)))) |
| 122 | (backquote-process (cdr s) level)))) | 122 | (backquote-process (cdr s) level)))) |
| 123 | (if (eq (car-safe exp) 'quote) | 123 | (cons (if (eq (car-safe exp) 'quote) 0 1) exp))) |
| 124 | (cons 0 (list 'quote s)) | ||
| 125 | (cons 1 exp)))) | ||
| 126 | 124 | ||
| 127 | (defun backquote-process (s &optional level) | 125 | (defun backquote-process (s &optional level) |
| 128 | "Process the body of a backquote. | 126 | "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 @@ | |||
| 1 | 2015-01-30 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * automated/core-elisp-tests.el (core-elisp-tests-3-backquote): New test. | ||
| 4 | |||
| 1 | 2015-01-28 Fabián Ezequiel Gallina <fgallina@gnu.org> | 5 | 2015-01-28 Fabián Ezequiel Gallina <fgallina@gnu.org> |
| 2 | 6 | ||
| 3 | * automated/python-tests.el (python-indent-pep8-1) | 7 | * 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 @@ | |||
| 24 | 24 | ||
| 25 | ;;; Code: | 25 | ;;; Code: |
| 26 | 26 | ||
| 27 | (ert-deftest core-elisp-tests () | 27 | (ert-deftest core-elisp-tests-1-defvar-in-let () |
| 28 | "Test some core Elisp rules." | 28 | "Test some core Elisp rules." |
| 29 | (with-temp-buffer | 29 | (with-temp-buffer |
| 30 | ;; Check that when defvar is run within a let-binding, the toplevel default | 30 | ;; Check that when defvar is run within a let-binding, the toplevel default |
| @@ -36,7 +36,7 @@ | |||
| 36 | c-e-x) | 36 | c-e-x) |
| 37 | '(1 2))))) | 37 | '(1 2))))) |
| 38 | 38 | ||
| 39 | (ert-deftest core-elisp-test-window-configurations () | 39 | (ert-deftest core-elisp-tests-2-window-configurations () |
| 40 | "Test properties of window-configurations." | 40 | "Test properties of window-configurations." |
| 41 | (let ((wc (current-window-configuration))) | 41 | (let ((wc (current-window-configuration))) |
| 42 | (with-current-buffer (window-buffer (frame-selected-window)) | 42 | (with-current-buffer (window-buffer (frame-selected-window)) |
| @@ -45,5 +45,8 @@ | |||
| 45 | (set-window-configuration wc) | 45 | (set-window-configuration wc) |
| 46 | (should (or (not mark-active) (mark))))) | 46 | (should (or (not mark-active) (mark))))) |
| 47 | 47 | ||
| 48 | (ert-deftest core-elisp-tests-3-backquote () | ||
| 49 | (should (eq 3 (eval ``,,'(+ 1 2))))) | ||
| 50 | |||
| 48 | (provide 'core-elisp-tests) | 51 | (provide 'core-elisp-tests) |
| 49 | ;;; core-elisp-tests.el ends here | 52 | ;;; core-elisp-tests.el ends here |