diff options
| author | Vibhav Pant | 2018-03-25 11:22:50 +0530 |
|---|---|---|
| committer | Vibhav Pant | 2018-03-25 11:22:50 +0530 |
| commit | d73d1384aa6d647a930b4dfe3e91505da4ffee21 (patch) | |
| tree | 54cf0a06f70575f10d07b04a1db7741dbd4f2bfd | |
| parent | a140513acb4ce27bd2b3472ee7a6ecb92676a8e9 (diff) | |
| download | emacs-d73d1384aa6d647a930b4dfe3e91505da4ffee21.tar.gz emacs-d73d1384aa6d647a930b4dfe3e91505da4ffee21.zip | |
Fix byte-optimize-memq incorrectly optimizing some memq forms.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-memq): Call
byte-optimize-and only for memq forms that can be optimized, use
byte-optimize-predicate to optimize the final form.
| -rw-r--r-- | lisp/emacs-lisp/byte-opt.el | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 54421e01be6..004f58cc12f 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el | |||
| @@ -774,10 +774,11 @@ | |||
| 774 | (when (and (eq (car-safe list) 'quote) | 774 | (when (and (eq (car-safe list) 'quote) |
| 775 | (listp (setq list (cadr list))) | 775 | (listp (setq list (cadr list))) |
| 776 | (= (length list) 1)) | 776 | (= (length list) 1)) |
| 777 | (setq form `(and ,(byte-optimize-predicate | 777 | (setq form (byte-optimize-and |
| 778 | `(eq ,(nth 1 form) ',(nth 0 list))) | 778 | `(and ,(byte-optimize-predicate |
| 779 | ',list)))) | 779 | `(eq ,(nth 1 form) ',(nth 0 list))) |
| 780 | (byte-optimize-and form))) | 780 | ',list))))) |
| 781 | (byte-optimize-predicate form))) | ||
| 781 | 782 | ||
| 782 | (put 'identity 'byte-optimizer 'byte-optimize-identity) | 783 | (put 'identity 'byte-optimizer 'byte-optimize-identity) |
| 783 | (put 'memq 'byte-optimizer 'byte-optimize-memq) | 784 | (put 'memq 'byte-optimizer 'byte-optimize-memq) |