This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU Guile".
http://git.savannah.gnu.org/cgit/guile.git/commit/?id=015a4aaedb9e8dd839b481bc83ac5b9f88e63a81 The branch, master has been updated via 015a4aaedb9e8dd839b481bc83ac5b9f88e63a81 (commit) from a653d32a8d02c90a426232de5b432e60fc33c1da (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 015a4aaedb9e8dd839b481bc83ac5b9f88e63a81 Author: Julian Graham <[email protected]> Date: Sun Nov 21 15:35:44 2010 -0500 Enumeration set universe comparisons should be done with `equal?' * module/rnrs/enums.scm (enum-set-union, enum-set-intersection, enum-set-difference): Compare enum-set universes with `equal?' to support sets generated using constructor syntax bound by `define-enumeration'. * test-suite/tests/r6rs-enums.test (enum-set-union, enum-set-intersection, enum-set-difference): New test cases for syntactically-generated sets. ----------------------------------------------------------------------- Summary of changes: module/rnrs/enums.scm | 12 ++++++------ test-suite/tests/r6rs-enums.test | 24 +++++++++++++++++++++--- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/module/rnrs/enums.scm b/module/rnrs/enums.scm index 79d3417..e97be46 100644 --- a/module/rnrs/enums.scm +++ b/module/rnrs/enums.scm @@ -82,8 +82,8 @@ (enum-set-subset? enum-set-2 enum-set-1))) (define (enum-set-union enum-set-1 enum-set-2) - (if (eq? (enum-set-universe enum-set-1) - (enum-set-universe enum-set-2)) + (if (equal? (enum-set-universe enum-set-1) + (enum-set-universe enum-set-2)) (make-enum-set (enum-set-universe enum-set-1) (lset-union eq? (enum-set-set enum-set-1) @@ -91,8 +91,8 @@ (raise (make-assertion-violation)))) (define (enum-set-intersection enum-set-1 enum-set-2) - (if (eq? (enum-set-universe enum-set-1) - (enum-set-universe enum-set-2)) + (if (equal? (enum-set-universe enum-set-1) + (enum-set-universe enum-set-2)) (make-enum-set (enum-set-universe enum-set-1) (lset-intersection eq? (enum-set-set enum-set-1) @@ -100,8 +100,8 @@ (raise (make-assertion-violation)))) (define (enum-set-difference enum-set-1 enum-set-2) - (if (eq? (enum-set-universe enum-set-1) - (enum-set-universe enum-set-2)) + (if (equal? (enum-set-universe enum-set-1) + (enum-set-universe enum-set-2)) (make-enum-set (enum-set-universe enum-set-1) (lset-difference eq? (enum-set-set enum-set-1) diff --git a/test-suite/tests/r6rs-enums.test b/test-suite/tests/r6rs-enums.test index d91de1c..4b7d1d7 100644 --- a/test-suite/tests/r6rs-enums.test +++ b/test-suite/tests/r6rs-enums.test @@ -146,7 +146,13 @@ (set1 ((enum-set-constructor universe) '(a b c))) (set2 ((enum-set-constructor universe) '(d e f))) (union (enum-set-union set1 set2))) - (equal? (enum-set->list union) '(a b c d e f))))) + (equal? (enum-set->list union) '(a b c d e f)))) + + (pass-if "enum-set-union operates on syntactically-generated sets" + (let* ((set1 (make-foo-set foo)) + (set2 (make-foo-set bar)) + (union (enum-set-union set1 set2))) + (equal? (enum-set->list union) '(foo bar))))) (with-test-prefix "enum-set-intersection" (pass-if "&assertion raised on different universes" @@ -170,7 +176,13 @@ (set1 ((enum-set-constructor universe) '(a b c))) (set2 ((enum-set-constructor universe) '(d e f))) (intersection (enum-set-intersection set1 set2))) - (null? (enum-set->list intersection))))) + (null? (enum-set->list intersection)))) + + (pass-if "enum-set-intersection on syntactically-generated sets" + (let* ((set1 (make-foo-set foo bar)) + (set2 (make-foo-set bar baz)) + (intersection (enum-set-intersection set1 set2))) + (equal? (enum-set->list intersection) '(bar))))) (with-test-prefix "enum-set-difference" (pass-if "&assertion raised on different universes" @@ -194,7 +206,13 @@ (set1 ((enum-set-constructor universe) '(a b c))) (set2 ((enum-set-constructor universe) '(a b c d))) (difference (enum-set-difference set1 set2))) - (null? (enum-set->list difference))))) + (null? (enum-set->list difference)))) + + (pass-if "enum-set-difference on syntactically-generated sets" + (let* ((set1 (make-foo-set foo bar baz)) + (set2 (make-foo-set foo baz)) + (difference (enum-set-difference set1 set2))) + (equal? (enum-set->list difference) '(bar))))) (with-test-prefix "enum-set-complement" (pass-if "complement of empty set is universe" hooks/post-receive -- GNU Guile
