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.
This commit is contained in:
Mattias Engdegård 2019-06-01 17:57:51 -07:00 committed by Paul Eggert
parent aa9d57eed1
commit b5e41e8ba3
2 changed files with 10 additions and 4 deletions

View file

@ -703,9 +703,7 @@ Return the sublist of LIST whose car is ITEM.
(while (and cl-list (not (cl--check-test cl-item (car cl-list))))
(setq cl-list (cdr cl-list)))
cl-list)
(if (and (numberp cl-item) (not (integerp cl-item)))
(member cl-item cl-list)
(memq cl-item cl-list))))
(memql cl-item cl-list)))
(autoload 'cl--compiler-macro-member "cl-macs")
;;;###autoload
@ -744,7 +742,7 @@ Return the sublist of LIST whose car matches.
(not (cl--check-test cl-item (car (car cl-alist))))))
(setq cl-alist (cdr cl-alist)))
(and cl-alist (car cl-alist)))
(if (and (numberp cl-item) (not (integerp cl-item)))
(if (numberp cl-item)
(assoc cl-item cl-alist)
(assq cl-item cl-alist))))
(autoload 'cl--compiler-macro-assoc "cl-macs")

View file

@ -302,6 +302,14 @@ Body are forms defining the test."
(should (equal '(2 8) (last (cl-replace list list2) 2)))
(should (equal '(1 1) (last (cl-fill list 1) 2)))))
(ert-deftest cl-seq-bignum-eql ()
(let ((x (+ most-positive-fixnum 1))
(y (+ most-positive-fixnum 1)))
(let ((l (list y)))
(should (eq (cl-member x l) l)))
(let ((a (list (cons y 1) (cons 2 y))))
(should (eq (cl-assoc x a) (car a)))
(should (eq (cl-rassoc x a) (cadr a))))))
(provide 'cl-seq-tests)
;;; cl-seq-tests.el ends here