APPROVE COMMIT 21.5
This fixes the bug reported by Steven Mitchell on XEmacs Beta, using
the patch he and Benson Mitchell provided.
It also adds some tests for subsetp, mostly provided by Steven.
# HG changeset patch
# Parent a95c89dc96957f050fd77bd1670674a0da2b3dbe
Fix subsetp based on patch by Benson and Steven Mitchell.
Add appropriate short-circuits for null set arguments.
Add tests (mostly from Steven Mitchell) to test suite.
diff -r a95c89dc9695 src/ChangeLog
--- a/src/ChangeLog Mon Dec 24 04:16:31 2012 +0900
+++ b/src/ChangeLog Mon Dec 24 14:12:51 2012 +0900
@@ -1,3 +1,11 @@
+2012-12-24 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ Based on patch by Benson and Steven Mitchell on XEmacs Beta
+ <50D16FF7.4090708(a)bnin.net>.
+
+ * sequence.c (venn): Fix bug in handling null arguments.
+ Add null set short circuits, conditional on caller is `subsetp'.
+
2012-10-18 Stephen J. Turnbull <stephen(a)xemacs.org>
* fontcolor-xlike-inc.c (xft_find_charset_font):
diff -r a95c89dc9695 src/sequence.c
--- a/src/sequence.c Mon Dec 24 04:16:31 2012 +0900
+++ b/src/sequence.c Mon Dec 24 14:12:51 2012 +0900
@@ -7606,6 +7606,20 @@
CHECK_LIST (liszt2);
CHECK_KEY_ARGUMENT (key);
+
+ /* #### Consider refactoring these tests into callers, and/or optimizing
+ tests. */
+ if (EQ (caller, Qsubsetp))
+ {
+ if (NILP (liszt1))
+ {
+ return Qt;
+ }
+ if (NILP (liszt2))
+ {
+ return Qnil;
+ }
+ }
if (NILP (liszt1) && intersectionp)
{
diff -r a95c89dc9695 tests/ChangeLog
--- a/tests/ChangeLog Mon Dec 24 04:16:31 2012 +0900
+++ b/tests/ChangeLog Mon Dec 24 14:12:51 2012 +0900
@@ -1,3 +1,8 @@
+2012-12-19 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * automated/lisp-tests.el: Add tests of #'subsetp.
+ Thanks Steven and Benson Mitchell <smitchell(a)bnin.net>.
+
2012-12-14 Mats Lidell <matsl(a)xemacs.org>
* automated/register-tests.el: New. Test for register.el. Test
diff -r a95c89dc9695 tests/automated/lisp-tests.el
--- a/tests/automated/lisp-tests.el Mon Dec 24 04:16:31 2012 +0900
+++ b/tests/automated/lisp-tests.el Mon Dec 24 14:12:51 2012 +0900
@@ -2435,6 +2435,23 @@
(gethash hashed-bignum hashing))
"checking hashing works correctly with #'eql tests and bignums"))))
+;; #'subsetp tests.
+;; Return non-nil if every element of LIST1 also appears in LIST2.
+;; A couple of non-nondegenerate false cases.
+(Assert (not (subsetp (list ?a ?b) (list ?c ?d))))
+(Assert (not (subsetp (list ?a ?b) (list ?b ?c ?d))))
+;; Next five thanks to Steven and Benson Mitchell on XEmacs Beta
+;; <50D16FF7.4090708(a)bnin.net>.
+;; Two non-degenerate true cases.
+(Assert (subsetp (list ?a) (list ?a ?b ?c ?d)))
+(Assert (subsetp (list ?a ?b) (list ?a ?b ?c ?d)))
+;; The three degenerate cases involving nil.
+(Assert (not (subsetp (list ?a) nil)))
+(Assert (subsetp nil (list ?a ?b ?c ?d)))
+(Assert (subsetp nil nil))
+;; #### We should also test the keywords.
+;; #### We should also test the error conditions.
+
;;
(when (decode-char 'ucs #x0192)
(Check-Error
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches