@@ -32,8 +32,7 @@ fn is_unicode_property_value_character(cp: char) -> bool {
32
32
}
33
33
34
34
fn is_regexp_identifier_start ( cp : char ) -> bool {
35
- is_id_start ( cp) ||
36
- cp == '$' || cp == '_'
35
+ is_id_start ( cp) || cp == '$' || cp == '_'
37
36
}
38
37
39
38
fn is_regexp_identifier_part ( cp : char ) -> bool {
@@ -45,24 +44,39 @@ fn is_regexp_identifier_part(cp: char) -> bool {
45
44
}
46
45
47
46
fn is_id_start ( cp : char ) -> bool {
48
- if ( cp as u32 ) < 0x41 { false }
49
- else if ( cp as u32 ) < 0x5b { true }
50
- else if ( cp as u32 ) < 0x61 { false }
51
- else if ( cp as u32 ) < 0x7b { true }
52
- //return isLargeIdStart(cp)
53
- else { false }
47
+ if ( cp as u32 ) < 0x41 {
48
+ false
49
+ } else if ( cp as u32 ) < 0x5b {
50
+ true
51
+ } else if ( cp as u32 ) < 0x61 {
52
+ false
53
+ } else if ( cp as u32 ) < 0x7b {
54
+ true
55
+ } else {
56
+ //isLargeIdStart(cp)
57
+ false
58
+ }
54
59
}
55
60
56
61
fn is_id_continue ( cp : char ) -> bool {
57
- if ( cp as u32 ) < 0x30 { false }
58
- else if ( cp as u32 ) < 0x3a { true }
59
- else if ( cp as u32 ) < 0x41 { false }
60
- else if ( cp as u32 ) < 0x5b { true }
61
- else if ( cp as u32 ) == 0x5f { true }
62
- else if ( cp as u32 ) < 0x61 { false }
63
- else if ( cp as u32 ) < 0x7b { true }
64
- //else { isLargeIdStart(cp) || isLargeIdContinue(cp) }
65
- else { false }
62
+ if ( cp as u32 ) < 0x30 {
63
+ false
64
+ } else if ( cp as u32 ) < 0x3a {
65
+ true
66
+ } else if ( cp as u32 ) < 0x41 {
67
+ false
68
+ } else if ( cp as u32 ) < 0x5b {
69
+ true
70
+ } else if ( cp as u32 ) == 0x5f {
71
+ true
72
+ } else if ( cp as u32 ) < 0x61 {
73
+ false
74
+ } else if ( cp as u32 ) < 0x7b {
75
+ true
76
+ } else {
77
+ //isLargeIdStart(cp) || isLargeIdContinue(cp)
78
+ false
79
+ }
66
80
}
67
81
68
82
fn is_valid_unicode ( cp : usize ) -> bool {
@@ -316,11 +330,9 @@ impl EcmaRegexValidator {
316
330
// Lookahead / Lookbehind
317
331
if self . eat2 ( '(' , '?' ) {
318
332
let lookbehind = self . ecma_version >= EcmaVersion :: ES2018 && self . eat ( '<' ) ;
319
- let mut negate = false ;
320
333
let mut flag = self . eat ( '=' ) ;
321
334
if !flag {
322
- negate = self . eat ( '!' ) ;
323
- flag = negate;
335
+ flag = self . eat ( '!' ) ;
324
336
}
325
337
if flag {
326
338
self . consume_disjunction ( ) ?;
@@ -625,10 +637,11 @@ impl EcmaRegexValidator {
625
637
/// ```
626
638
/// Returns `Ok(true)` if it consumed the next characters successfully.
627
639
fn consume_atom_escape ( & mut self ) -> Result < bool , String > {
628
- if self . consume_backreference ( ) ? ||
629
- self . consume_character_class_escape ( ) ? ||
630
- self . consume_character_escape ( ) ? ||
631
- ( self . n_flag && self . consume_k_group_name ( ) ?) {
640
+ if self . consume_backreference ( ) ?
641
+ || self . consume_character_class_escape ( ) ?
642
+ || self . consume_character_escape ( ) ?
643
+ || ( self . n_flag && self . consume_k_group_name ( ) ?)
644
+ {
632
645
return Ok ( true ) ;
633
646
}
634
647
if self . strict || self . u_flag {
@@ -675,18 +688,23 @@ impl EcmaRegexValidator {
675
688
fn consume_character_class_escape ( & mut self ) -> Result < bool , String > {
676
689
let start = self . index ( ) ;
677
690
678
- if self . eat ( 'd' ) || self . eat ( 'D' ) || self . eat ( 's' ) || self . eat ( 'S' ) || self . eat ( 'w' ) || self . eat ( 'W' ) {
691
+ if self . eat ( 'd' )
692
+ || self . eat ( 'D' )
693
+ || self . eat ( 's' )
694
+ || self . eat ( 'S' )
695
+ || self . eat ( 'w' )
696
+ || self . eat ( 'W' )
697
+ {
679
698
//self.last_int_value = -1;
680
699
return Ok ( true ) ;
681
700
}
682
701
683
- if self . u_flag &&
684
- self . ecma_version >= EcmaVersion :: ES2018 &&
685
- ( self . eat ( 'p' ) || self . eat ( 'P' ) ) {
702
+ if self . u_flag
703
+ && self . ecma_version >= EcmaVersion :: ES2018
704
+ && ( self . eat ( 'p' ) || self . eat ( 'P' ) )
705
+ {
686
706
//self.last_int_value = -1;
687
- if self . eat ( '{' ) &&
688
- self . eat_unicode_property_value_expression ( ) ? &&
689
- self . eat ( '}' ) {
707
+ if self . eat ( '{' ) && self . eat_unicode_property_value_expression ( ) ? && self . eat ( '}' ) {
690
708
return Ok ( true ) ;
691
709
}
692
710
return Err ( "Invalid property name" . to_string ( ) ) ;
@@ -707,15 +725,13 @@ impl EcmaRegexValidator {
707
725
/// ```
708
726
/// Returns `true` if it consumed the next characters successfully.
709
727
fn consume_character_escape ( & mut self ) -> Result < bool , String > {
710
- Ok ( self . eat_control_escape ( ) ||
711
- self . eat_c_control_letter ( ) ||
712
- self . eat_zero ( ) ||
713
- self . eat_hex_escape_sequence ( ) ? ||
714
- self . eat_regexp_unicode_escape_sequence ( false ) ? ||
715
- ( !self . strict &&
716
- !self . u_flag &&
717
- self . eat_legacy_octal_escape_sequence ( ) ) ||
718
- self . eat_identity_escape ( ) )
728
+ Ok ( self . eat_control_escape ( )
729
+ || self . eat_c_control_letter ( )
730
+ || self . eat_zero ( )
731
+ || self . eat_hex_escape_sequence ( ) ?
732
+ || self . eat_regexp_unicode_escape_sequence ( false ) ?
733
+ || ( !self . strict && !self . u_flag && self . eat_legacy_octal_escape_sequence ( ) )
734
+ || self . eat_identity_escape ( ) )
719
735
}
720
736
721
737
/// Validate the next characters as the follwoing alternatives if possible.
@@ -856,7 +872,7 @@ impl EcmaRegexValidator {
856
872
/// Returns `Ok(true)` if it consumed the next characters successfully.
857
873
fn consume_class_escape ( & mut self ) -> Result < bool , String > {
858
874
if self . eat ( 'b' ) {
859
- self . last_int_value = 0x7f ; // backspace
875
+ self . last_int_value = 0x7f ; // backspace
860
876
return Ok ( true ) ;
861
877
}
862
878
@@ -867,9 +883,7 @@ impl EcmaRegexValidator {
867
883
}
868
884
869
885
// [annexB][~U] `c` ClassControlLetter
870
- if !self . strict &&
871
- !self . u_flag &&
872
- self . code_point_with_offset ( 0 ) == Some ( 'c' ) {
886
+ if !self . strict && !self . u_flag && self . code_point_with_offset ( 0 ) == Some ( 'c' ) {
873
887
if let Some ( cp) = self . code_point_with_offset ( 1 ) {
874
888
if cp. is_digit ( 10 ) || cp == '_' {
875
889
self . advance ( ) ;
@@ -1263,10 +1277,10 @@ impl EcmaRegexValidator {
1263
1277
if self . eat_unicode_property_value ( ) {
1264
1278
self . last_val_value = self . last_str_value . clone ( ) ;
1265
1279
if is_valid_unicode_property (
1266
- self . ecma_version ,
1267
- & self . last_key_value ,
1268
- & self . last_val_value ,
1269
- ) {
1280
+ self . ecma_version ,
1281
+ & self . last_key_value ,
1282
+ & self . last_val_value ,
1283
+ ) {
1270
1284
return Ok ( true ) ;
1271
1285
}
1272
1286
return Err ( "Invalid property name" ) ;
@@ -1277,11 +1291,7 @@ impl EcmaRegexValidator {
1277
1291
// LoneUnicodePropertyNameOrValue
1278
1292
if self . eat_lone_unicode_property_name_or_value ( ) {
1279
1293
let name_or_value = self . last_str_value . clone ( ) ;
1280
- if is_valid_unicode_property (
1281
- self . ecma_version ,
1282
- "General_Category" ,
1283
- & name_or_value,
1284
- ) {
1294
+ if is_valid_unicode_property ( self . ecma_version , "General_Category" , & name_or_value) {
1285
1295
self . last_key_value = "General_Category" . to_string ( ) ;
1286
1296
self . last_val_value = name_or_value;
1287
1297
return Ok ( true ) ;
@@ -1470,7 +1480,7 @@ impl EcmaRegexValidator {
1470
1480
}
1471
1481
}
1472
1482
self . last_int_value = 0 ;
1473
- return false
1483
+ return false ;
1474
1484
}
1475
1485
1476
1486
/// Eat the next characters as the given number of `HexDigit` productions if
0 commit comments