From 4716a6eb0028dc609363cdeb75cfed64fc3d9d6d Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Wed, 3 Aug 2016 13:02:14 -0500 Subject: [PATCH] Fix set-symmetric-difference when passed the same set multiple times. Closes #1403. --- pkgs/racket-test-core/tests/racket/set.rktl | 3 +++ racket/collects/racket/private/set-types.rkt | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/set.rktl b/pkgs/racket-test-core/tests/racket/set.rktl index 99013eeaeb..9206cb0526 100644 --- a/pkgs/racket-test-core/tests/racket/set.rktl +++ b/pkgs/racket-test-core/tests/racket/set.rktl @@ -139,6 +139,9 @@ 'set-symmetric-difference/list '(1 3)) +(test #t equal? (set) (let ([a (set 1 2 3)]) (set-symmetric-difference a a))) +(test #t equal? (set) (let ([a (set 1 2 3)] [b (set 1 2 3)]) (set-symmetric-difference a b))) + (let ([s (set 1 2 3)]) (test #t equal? s (set-add (set-add (set-add (set) 1) 2) 3)) (test #t equal? (seteq 1 2 3) (seteq 1 2 3)) diff --git a/racket/collects/racket/private/set-types.rkt b/racket/collects/racket/private/set-types.rkt index 3cac666e70..bc22c1c6a3 100644 --- a/racket/collects/racket/private/set-types.rkt +++ b/racket/collects/racket/private/set-types.rkt @@ -186,8 +186,7 @@ s (for/fold ([table (custom-set-table largest-immutable)]) - ([s2 (in-list (cons s sets))] - #:unless (eq? s2 largest-immutable)) + ([s2 (in-list (remove largest-immutable (cons s sets)))]) (for/fold ([table table]) ([x (in-hash-keys (custom-set-table s2))]) (if (hash-ref table x #f) (hash-remove table x)