Skip to content

Commit

Permalink
1.0.14.20: XSET used EQ instead of EQL for comparison
Browse files Browse the repository at this point in the history
 * Fix it, and add a test specifically for MEMBER using EQL.
  • Loading branch information
nikodemus committed Feb 5, 2008
1 parent 6617e5f commit 281e26e
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 6 deletions.
10 changes: 5 additions & 5 deletions src/code/xset.lisp
Expand Up @@ -59,10 +59,10 @@
(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))
Expand All @@ -82,7 +82,7 @@
(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)
Expand All @@ -105,7 +105,7 @@
(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)
Expand All @@ -119,7 +119,7 @@
(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)
Expand Down
9 changes: 9 additions & 0 deletions tests/type.pure.lisp
Expand Up @@ -387,3 +387,12 @@ ACTUAL ~D DERIVED ~D~%"
(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))))))
2 changes: 1 addition & 1 deletion version.lisp-expr
Expand Up @@ -17,4 +17,4 @@
;;; 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"

0 comments on commit 281e26e

Please sign in to comment.