File tree Expand file tree Collapse file tree 2 files changed +9
-2
lines changed Expand file tree Collapse file tree 2 files changed +9
-2
lines changed Original file line number Diff line number Diff line change @@ -374,7 +374,12 @@ impl CharClass {
374
374
pub fn negate ( mut self ) -> CharClass {
375
375
fn range ( s : char , e : char ) -> ClassRange { ClassRange :: new ( s, e) }
376
376
377
- if self . is_empty ( ) { return self ; }
377
+ if self . is_empty ( ) {
378
+ // Inverting an empty range yields all of Unicode.
379
+ return CharClass {
380
+ ranges : vec ! [ ClassRange { start: '\x00' , end: '\u{10ffff}' } ] ,
381
+ } ;
382
+ }
378
383
self = self . canonicalize ( ) ;
379
384
let mut inv = self . to_empty ( ) ;
380
385
if self [ 0 ] . start > '\x00' {
Original file line number Diff line number Diff line change @@ -31,7 +31,9 @@ fn class(ranges: &[(char, char)]) -> CharClass {
31
31
#[ test]
32
32
fn negate ( ) {
33
33
fn prop ( ranges : Vec < ( char , char ) > ) -> bool {
34
- class ( & ranges) . canonicalize ( ) == class ( & ranges) . negate ( ) . negate ( )
34
+ let expected = class ( & ranges) . canonicalize ( ) ;
35
+ let got = class ( & ranges) . negate ( ) . negate ( ) ;
36
+ expected == got
35
37
}
36
38
qc ( prop as fn ( Vec < ( char , char ) > ) -> bool ) ;
37
39
}
You can’t perform that action at this time.
0 commit comments