fix char-set-complement (PR 8624, patch from Jens Axel)

svn: r6016
This commit is contained in:
Matthew Flatt 2007-04-22 21:17:25 +00:00
parent b276366187
commit fdf878cda5
2 changed files with 14 additions and 7 deletions

View File

@ -244,10 +244,10 @@
[(cs . more) [(cs . more)
(fold-set char-set-delete cs more)])) (fold-set char-set-delete cs more)]))
(define (char-set-complement cs) (define (char-set-complement cs)
(make-char-set (make-char-set
(union (complement (char-set-set cs) #x0 #xD7FF) (difference (complement (char-set-set cs) 0 #x10FFFF)
(complement (char-set-set cs) #xE000 #x10FFFF)))) (make-range #xD800 #xDFFF))))
(define-syntax define-set-op (define-syntax define-set-op
(syntax-rules () (syntax-rules ()

View File

@ -52,7 +52,8 @@
(test #t char-set-contains? char-set:letter+digit #\A) (test #t char-set-contains? char-set:letter+digit #\A)
(test #t char-set-contains? char-set:letter+digit #\Z) (test #t char-set-contains? char-set:letter+digit #\Z)
(test 90547 char-set-size char-set:letter) ;; As of Unicode 4.1:
(test 91395 char-set-size char-set:letter)
(test #t char-set= char-set:letter+digit (char-set-union char-set:letter char-set:digit)) (test #t char-set= char-set:letter+digit (char-set-union char-set:letter char-set:digit))
;; Slow!: ;; Slow!:
@ -108,8 +109,9 @@
;; Iterating over character sets ---------------------------------------- ;; Iterating over character sets ----------------------------------------
;; The number 268 comes from "grep Nd UnicodeData.txt | wc -l" ;; The number 270 comes from "grep Nd UnicodeData.txt | wc -l"
(test 268 char-set-size char-set:digit) ;; in Unicode 4.1
(test 270 char-set-size char-set:digit)
(test #t char-set= (test #t char-set=
char-set:digit char-set:digit
@ -492,4 +494,9 @@
;; ---------------------------------------- ;; ----------------------------------------
;; PR 8624 --- make sure there's no error:
(test #t values (string? (char-set->string (char-set-complement char-set:graphic))))
;; ----------------------------------------
(report-errs) (report-errs)