Fix bugs 10101 and 10100, patch from David Van Horn.
svn: r13902
This commit is contained in:
parent
ff0b532864
commit
ea156c984c
|
@ -273,14 +273,17 @@
|
|||
|
||||
(define char-set-diff+intersection
|
||||
(case-lambda
|
||||
[(cs1 cs2)
|
||||
(let-values ([(cs1^cs2 cs1-cs2 cs2-cs1) (split (char-set-set cs1) (char-set-set cs2))])
|
||||
(values (make-char-set cs1-cs2)
|
||||
(make-char-set cs1^cs2)))]
|
||||
[(cs1 cs2 . more)
|
||||
(let-values ([(d i) (char-set-diff+intersection cs1 cs2)])
|
||||
(values (apply char-set-difference d more)
|
||||
(apply char-set-intersection i more)))]))
|
||||
[(cs)
|
||||
(values (char-set-difference cs)
|
||||
(char-set-intersection cs (char-set-union)))]
|
||||
[(cs1 cs2)
|
||||
(let-values ([(cs1^cs2 cs1-cs2 cs2-cs1) (split (char-set-set cs1) (char-set-set cs2))])
|
||||
(values (make-char-set cs1-cs2)
|
||||
(make-char-set cs1^cs2)))]
|
||||
[(cs1 cs2 . more)
|
||||
(let-values ([(d i) (char-set-diff+intersection cs1 cs2)])
|
||||
(values (apply char-set-difference d more)
|
||||
(apply char-set-intersection i more)))]))
|
||||
|
||||
(define char-set-adjoin! char-set-adjoin)
|
||||
(define char-set-delete! char-set-delete)
|
||||
|
@ -432,13 +435,13 @@
|
|||
[char-set-union char-sets0/c]
|
||||
[char-set-union! char-sets/c]
|
||||
[char-set-intersection char-sets0/c]
|
||||
[char-set-intersection! char-sets/c]
|
||||
[char-set-intersection! char-sets0/c]
|
||||
[char-set-difference char-sets/c]
|
||||
[char-set-difference! char-sets+/c]
|
||||
[char-set-difference! char-sets/c]
|
||||
[char-set-xor char-sets0/c]
|
||||
[char-set-xor! char-sets/c]
|
||||
[char-set-diff+intersection char-sets+/c]
|
||||
[char-set-diff+intersection! char-sets+/c])
|
||||
[char-set-diff+intersection char-sets/c]
|
||||
[char-set-diff+intersection! char-sets/c])
|
||||
(provide
|
||||
char-set:lower-case
|
||||
char-set:upper-case
|
||||
|
|
|
@ -251,8 +251,10 @@
|
|||
(char-set #\v #\b)))
|
||||
(test #t char-set= cs1 (char-set-diff (char-set #\U #\t #\a #\h #\v #\w)
|
||||
(char-set #\v #\b)
|
||||
(char-set #\w))))])
|
||||
(char-set #\w)))
|
||||
(test #t char-set= cs1 (char-set-diff (char-set #\U #\t #\a #\h))))])
|
||||
(go char-set-difference)
|
||||
(go char-set-difference!)
|
||||
(go char-set-difference!))
|
||||
|
||||
(let ([go
|
||||
|
@ -267,7 +269,12 @@
|
|||
|
||||
(let ([go
|
||||
(lambda (char-set-diff+i)
|
||||
(test #t andmap char-set= (list cs1 (char-set #\v))
|
||||
(test #t andmap char-set= (list cs1 (char-set-union))
|
||||
(call-with-values
|
||||
(lambda ()
|
||||
(char-set-diff+i (char-set #\U #\t #\a #\h)))
|
||||
list))
|
||||
(test #t andmap char-set= (list cs1 (char-set #\v))
|
||||
(call-with-values
|
||||
(lambda ()
|
||||
(char-set-diff+i (char-set #\U #\t #\a #\h #\v)
|
||||
|
@ -281,6 +288,7 @@
|
|||
(char-set #\w)))
|
||||
list)))])
|
||||
(go char-set-diff+intersection)
|
||||
(go char-set-diff+intersection)
|
||||
(go char-set-diff+intersection!))
|
||||
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue
Block a user