From 281e26e9e1142c343211fdc0ac65d7d3c62f2612 Mon Sep 17 00:00:00 2001 From: Nikodemus Siivola Date: Tue, 5 Feb 2008 04:09:23 +0000 Subject: [PATCH] 1.0.14.20: XSET used EQ instead of EQL for comparison * Fix it, and add a test specifically for MEMBER using EQL. --- src/code/xset.lisp | 10 +++++----- tests/type.pure.lisp | 9 +++++++++ version.lisp-expr | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/code/xset.lisp b/src/code/xset.lisp index 38a9a2b71..dfdf182bd 100644 --- a/src/code/xset.lisp +++ b/src/code/xset.lisp @@ -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)) @@ -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) @@ -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) @@ -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) diff --git a/tests/type.pure.lisp b/tests/type.pure.lisp index 07ad60d76..1e0b27a44 100644 --- a/tests/type.pure.lisp +++ b/tests/type.pure.lisp @@ -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)))))) diff --git a/version.lisp-expr b/version.lisp-expr index 5b3870f22..b32441dbf 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 2.11.4.GIT