diff options
| author | Mattias EngdegÄrd | 2019-06-01 17:57:51 -0700 |
|---|---|---|
| committer | Paul Eggert | 2019-06-01 18:13:00 -0700 |
| commit | b5e41e8ba3d90f5d01a41912681c47a3408c679a (patch) | |
| tree | c6d0c6262a07bd8b94ecead2be12f82f7a070f85 | |
| parent | aa9d57eed17ee6a8006c9cdd4f8636100482cd71 (diff) | |
| download | emacs-b5e41e8ba3d90f5d01a41912681c47a3408c679a.tar.gz emacs-b5e41e8ba3d90f5d01a41912681c47a3408c679a.zip | |
Fix `cl-member' and `cl-assoc' for bignums
* lisp/emacs-lisp/cl-seq.el (cl-member, cl-assoc): Work with bignums.
* test/lisp/emacs-lisp/cl-seq-tests.el (cl-seq-bignum-eql): New.
| -rw-r--r-- | lisp/emacs-lisp/cl-seq.el | 6 | ||||
| -rw-r--r-- | test/lisp/emacs-lisp/cl-seq-tests.el | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el index 3eb6ea16daf..86a73e19970 100644 --- a/lisp/emacs-lisp/cl-seq.el +++ b/lisp/emacs-lisp/cl-seq.el | |||
| @@ -703,9 +703,7 @@ Return the sublist of LIST whose car is ITEM. | |||
| 703 | (while (and cl-list (not (cl--check-test cl-item (car cl-list)))) | 703 | (while (and cl-list (not (cl--check-test cl-item (car cl-list)))) |
| 704 | (setq cl-list (cdr cl-list))) | 704 | (setq cl-list (cdr cl-list))) |
| 705 | cl-list) | 705 | cl-list) |
| 706 | (if (and (numberp cl-item) (not (integerp cl-item))) | 706 | (memql cl-item cl-list))) |
| 707 | (member cl-item cl-list) | ||
| 708 | (memq cl-item cl-list)))) | ||
| 709 | (autoload 'cl--compiler-macro-member "cl-macs") | 707 | (autoload 'cl--compiler-macro-member "cl-macs") |
| 710 | 708 | ||
| 711 | ;;;###autoload | 709 | ;;;###autoload |
| @@ -744,7 +742,7 @@ Return the sublist of LIST whose car matches. | |||
| 744 | (not (cl--check-test cl-item (car (car cl-alist)))))) | 742 | (not (cl--check-test cl-item (car (car cl-alist)))))) |
| 745 | (setq cl-alist (cdr cl-alist))) | 743 | (setq cl-alist (cdr cl-alist))) |
| 746 | (and cl-alist (car cl-alist))) | 744 | (and cl-alist (car cl-alist))) |
| 747 | (if (and (numberp cl-item) (not (integerp cl-item))) | 745 | (if (numberp cl-item) |
| 748 | (assoc cl-item cl-alist) | 746 | (assoc cl-item cl-alist) |
| 749 | (assq cl-item cl-alist)))) | 747 | (assq cl-item cl-alist)))) |
| 750 | (autoload 'cl--compiler-macro-assoc "cl-macs") | 748 | (autoload 'cl--compiler-macro-assoc "cl-macs") |
diff --git a/test/lisp/emacs-lisp/cl-seq-tests.el b/test/lisp/emacs-lisp/cl-seq-tests.el index 86288e99ca5..6515eee9f24 100644 --- a/test/lisp/emacs-lisp/cl-seq-tests.el +++ b/test/lisp/emacs-lisp/cl-seq-tests.el | |||
| @@ -302,6 +302,14 @@ Body are forms defining the test." | |||
| 302 | (should (equal '(2 8) (last (cl-replace list list2) 2))) | 302 | (should (equal '(2 8) (last (cl-replace list list2) 2))) |
| 303 | (should (equal '(1 1) (last (cl-fill list 1) 2))))) | 303 | (should (equal '(1 1) (last (cl-fill list 1) 2))))) |
| 304 | 304 | ||
| 305 | (ert-deftest cl-seq-bignum-eql () | ||
| 306 | (let ((x (+ most-positive-fixnum 1)) | ||
| 307 | (y (+ most-positive-fixnum 1))) | ||
| 308 | (let ((l (list y))) | ||
| 309 | (should (eq (cl-member x l) l))) | ||
| 310 | (let ((a (list (cons y 1) (cons 2 y)))) | ||
| 311 | (should (eq (cl-assoc x a) (car a))) | ||
| 312 | (should (eq (cl-rassoc x a) (cadr a)))))) | ||
| 305 | 313 | ||
| 306 | (provide 'cl-seq-tests) | 314 | (provide 'cl-seq-tests) |
| 307 | ;;; cl-seq-tests.el ends here | 315 | ;;; cl-seq-tests.el ends here |