(size (xset-list-size xset)))
(if (listp data)
(if (< size +xset-list-size-limit+)
- (unless (member elt data :test #'eq)
+ (unless (member elt data :test #'eql)
(setf (xset-list-size xset) (1+ size)
(xset-data xset) (cons elt data)))
- (let ((table (make-hash-table :size (* 2 size) :test #'eq)))
+ (let ((table (make-hash-table :size (* 2 size) :test #'eql)))
(setf (gethash elt table) t)
(dolist (x data)
(setf (gethash x table) t))
(defun xset-member-p (elt xset)
(let ((data (xset-data xset)))
(if (listp data)
- (member elt data :test #'eq)
+ (member elt data :test #'eql)
(gethash elt data))))
(defun xset-members (xset)
(let ((data (xset-data lookup)))
(map-xset (if (listp data)
(lambda (elt)
- (when (member elt data :test #'eq)
+ (when (member elt data :test #'eql)
(add-to-xset elt intersection)))
(lambda (elt)
(when (gethash elt data)
(map-xset
(if (listp data)
(lambda (elt)
- (unless (member elt data :test #'eq)
+ (unless (member elt data :test #'eql)
(return-from xset-subset-p nil)))
(lambda (elt)
(unless (gethash elt data)
(typep x (quote fixnum))))))
(assert (not (funcall f (1+ most-positive-fixnum))))
(assert (funcall f most-positive-fixnum))))
+
+(with-test (:name (:typep :member-uses-eql))
+ (assert (eval '(typep 1/3 '(member 1/3 nil))))
+ (assert (eval '(typep 1.0 '(member 1.0 t))))
+ (assert (eval '(typep #c(1.1 1.2) '(member #c(1.1 1.2)))))
+ (assert (eval '(typep #c(1 1) '(member #c(1 1)))))
+ (let ((bignum1 (+ 12 most-positive-fixnum))
+ (bignum2 (- (+ 15 most-positive-fixnum) 3)))
+ (assert (eval `(typep ,bignum1 '(member ,bignum2))))))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.14.19"
+"1.0.14.20"