@@ -606,11 +606,21 @@ module ts {
606
606
}
607
607
return + ( text . substring ( start , pos ) ) ;
608
608
}
609
+
610
+ function scanExactNumberOfHexDigits ( count : number ) : number {
611
+ return scanHexDigits ( /*minCount*/ count , /*maxCount*/ count ) ;
612
+ }
613
+
614
+ function scanMinimumNumberOfHexDigits ( count : number ) : number {
615
+ return scanHexDigits ( /*minCount*/ count , /*maxCount*/ undefined ) ;
616
+ }
609
617
610
- function scanHexDigits ( count : number , mustMatchCount ?: boolean ) : number {
618
+ function scanHexDigits ( minCount : number , maxCount ?: number ) : number {
619
+ var maxCountSpecified = maxCount !== undefined ;
620
+
611
621
var digits = 0 ;
612
622
var value = 0 ;
613
- while ( digits < count || ! mustMatchCount ) {
623
+ while ( ! maxCountSpecified || digits < maxCount ) {
614
624
var ch = text . charCodeAt ( pos ) ;
615
625
if ( ch >= CharacterCodes . _0 && ch <= CharacterCodes . _9 ) {
616
626
value = value * 16 + ch - CharacterCodes . _0 ;
@@ -627,7 +637,7 @@ module ts {
627
637
pos ++ ;
628
638
digits ++ ;
629
639
}
630
- if ( digits < count ) {
640
+ if ( digits < minCount ) {
631
641
value = - 1 ;
632
642
}
633
643
return value ;
@@ -766,7 +776,7 @@ module ts {
766
776
return "\"" ;
767
777
case CharacterCodes . x :
768
778
case CharacterCodes . u :
769
- var ch = scanHexDigits ( ch === CharacterCodes . x ? 2 : 4 , /*mustMatchCount*/ true ) ;
779
+ var ch = scanExactNumberOfHexDigits ( ch === CharacterCodes . x ? 2 : 4 ) ;
770
780
if ( ch >= 0 ) {
771
781
return String . fromCharCode ( ch ) ;
772
782
}
@@ -797,7 +807,7 @@ module ts {
797
807
if ( pos + 5 < len && text . charCodeAt ( pos + 1 ) === CharacterCodes . u ) {
798
808
var start = pos ;
799
809
pos += 2 ;
800
- var value = scanHexDigits ( 4 , /*mustMatchCount*/ true ) ;
810
+ var value = scanExactNumberOfHexDigits ( 4 ) ;
801
811
pos = start ;
802
812
return value ;
803
813
}
@@ -1034,7 +1044,7 @@ module ts {
1034
1044
case CharacterCodes . _0 :
1035
1045
if ( pos + 2 < len && ( text . charCodeAt ( pos + 1 ) === CharacterCodes . X || text . charCodeAt ( pos + 1 ) === CharacterCodes . x ) ) {
1036
1046
pos += 2 ;
1037
- var value = scanHexDigits ( 1 , /*mustMatchCount*/ false ) ;
1047
+ var value = scanMinimumNumberOfHexDigits ( 1 ) ;
1038
1048
if ( value < 0 ) {
1039
1049
error ( Diagnostics . Hexadecimal_digit_expected ) ;
1040
1050
value = 0 ;
0 commit comments