Skip to content

Commit ee71954

Browse files
Simplified scanHexDigits by just wrapping the intended functionality in separate functions.
1 parent f16e875 commit ee71954

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

Diff for: src/compiler/scanner.ts

+16-6
Original file line numberDiff line numberDiff line change
@@ -606,11 +606,21 @@ module ts {
606606
}
607607
return +(text.substring(start, pos));
608608
}
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+
}
609617

610-
function scanHexDigits(count: number, mustMatchCount?: boolean): number {
618+
function scanHexDigits(minCount: number, maxCount?: number): number {
619+
var maxCountSpecified = maxCount !== undefined;
620+
611621
var digits = 0;
612622
var value = 0;
613-
while (digits < count || !mustMatchCount) {
623+
while (!maxCountSpecified || digits < maxCount) {
614624
var ch = text.charCodeAt(pos);
615625
if (ch >= CharacterCodes._0 && ch <= CharacterCodes._9) {
616626
value = value * 16 + ch - CharacterCodes._0;
@@ -627,7 +637,7 @@ module ts {
627637
pos++;
628638
digits++;
629639
}
630-
if (digits < count) {
640+
if (digits < minCount) {
631641
value = -1;
632642
}
633643
return value;
@@ -766,7 +776,7 @@ module ts {
766776
return "\"";
767777
case CharacterCodes.x:
768778
case CharacterCodes.u:
769-
var ch = scanHexDigits(ch === CharacterCodes.x ? 2 : 4, /*mustMatchCount*/ true);
779+
var ch = scanExactNumberOfHexDigits(ch === CharacterCodes.x ? 2 : 4);
770780
if (ch >= 0) {
771781
return String.fromCharCode(ch);
772782
}
@@ -797,7 +807,7 @@ module ts {
797807
if (pos + 5 < len && text.charCodeAt(pos + 1) === CharacterCodes.u) {
798808
var start = pos;
799809
pos += 2;
800-
var value = scanHexDigits(4, /*mustMatchCount*/ true);
810+
var value = scanExactNumberOfHexDigits(4);
801811
pos = start;
802812
return value;
803813
}
@@ -1034,7 +1044,7 @@ module ts {
10341044
case CharacterCodes._0:
10351045
if (pos + 2 < len && (text.charCodeAt(pos + 1) === CharacterCodes.X || text.charCodeAt(pos + 1) === CharacterCodes.x)) {
10361046
pos += 2;
1037-
var value = scanHexDigits(1, /*mustMatchCount*/ false);
1047+
var value = scanMinimumNumberOfHexDigits(1);
10381048
if (value < 0) {
10391049
error(Diagnostics.Hexadecimal_digit_expected);
10401050
value = 0;

0 commit comments

Comments
 (0)