Skip to content

Commit a3126fd

Browse files
committed
Simplify JSDoc scanner loop
1 parent b1711e3 commit a3126fd

1 file changed

Lines changed: 36 additions & 48 deletions

File tree

src/compiler/scanner.ts

Lines changed: 36 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1672,11 +1672,16 @@ namespace ts {
16721672
}
16731673

16741674
function scanJSDocToken(): SyntaxKind {
1675+
if (pos >= end) {
1676+
return token = SyntaxKind.EndOfFileToken;
1677+
}
1678+
16751679
startPos = pos;
16761680

16771681
// Eat leading whitespace
1682+
let ch = text.charCodeAt(pos);
16781683
while (pos < end) {
1679-
const ch = text.charCodeAt(pos);
1684+
ch = text.charCodeAt(pos);
16801685
if (isWhiteSpace(ch)) {
16811686
pos++;
16821687
}
@@ -1686,55 +1691,38 @@ namespace ts {
16861691
}
16871692
tokenPos = pos;
16881693

1689-
let identifierStarted = false;
1690-
while (pos < end) {
1691-
const ch = text.charCodeAt(pos);
1692-
if (identifierStarted) {
1693-
if (!isIdentifierPart(ch, ScriptTarget.Latest)) {
1694-
return token = SyntaxKind.Identifier;
1695-
}
1696-
}
1697-
else {
1698-
if (ch === CharacterCodes.at) {
1699-
return pos += 1, token = SyntaxKind.AtToken;
1700-
}
1701-
else if (isLineBreak(ch)) {
1702-
return pos += 1, token = SyntaxKind.NewLineTrivia;
1703-
}
1704-
else if (ch === CharacterCodes.asterisk) {
1705-
return pos += 1, token = SyntaxKind.AsteriskToken;
1706-
}
1707-
else if (ch === CharacterCodes.openBrace) {
1708-
return pos += 1, token = SyntaxKind.OpenBraceToken;
1709-
}
1710-
else if (ch === CharacterCodes.closeBrace) {
1711-
return pos += 1, token = SyntaxKind.CloseBraceToken;
1712-
}
1713-
else if (ch === CharacterCodes.openBracket) {
1714-
return pos += 1, token = SyntaxKind.OpenBracketToken;
1715-
}
1716-
else if (ch === CharacterCodes.closeBracket) {
1717-
return pos += 1, token = SyntaxKind.CloseBracketToken;
1718-
}
1719-
else if (ch === CharacterCodes.equals) {
1720-
return pos += 1, token = SyntaxKind.EqualsToken;
1721-
}
1722-
else if (ch === CharacterCodes.comma) {
1723-
return pos += 1, token = SyntaxKind.CommaToken;
1724-
}
1725-
else if (isWhiteSpace(ch)) {
1726-
// Keep going
1727-
}
1728-
else if (isIdentifierStart(ch, ScriptTarget.Latest)) {
1729-
identifierStarted = true;
1730-
}
1731-
else {
1732-
return pos += 1, token = SyntaxKind.Unknown;
1733-
}
1694+
switch (ch) {
1695+
case CharacterCodes.at:
1696+
return pos += 1, token = SyntaxKind.AtToken;
1697+
case CharacterCodes.lineFeed:
1698+
case CharacterCodes.carriageReturn:
1699+
return pos += 1, token = SyntaxKind.NewLineTrivia;
1700+
case CharacterCodes.asterisk:
1701+
return pos += 1, token = SyntaxKind.AsteriskToken;
1702+
case CharacterCodes.openBrace:
1703+
return pos += 1, token = SyntaxKind.OpenBraceToken;
1704+
case CharacterCodes.closeBrace:
1705+
return pos += 1, token = SyntaxKind.CloseBraceToken;
1706+
case CharacterCodes.openBracket:
1707+
return pos += 1, token = SyntaxKind.OpenBracketToken;
1708+
case CharacterCodes.closeBracket:
1709+
return pos += 1, token = SyntaxKind.CloseBracketToken;
1710+
case CharacterCodes.equals:
1711+
return pos += 1, token = SyntaxKind.EqualsToken;
1712+
case CharacterCodes.comma:
1713+
return pos += 1, token = SyntaxKind.CommaToken;
1714+
}
1715+
1716+
if (isIdentifierStart(ch, ScriptTarget.Latest)) {
1717+
pos++;
1718+
while (isIdentifierPart(text.charCodeAt(pos), ScriptTarget.Latest) && pos < end) {
1719+
pos++;
17341720
}
1735-
pos += 1;
1721+
return token = SyntaxKind.Identifier;
1722+
}
1723+
else {
1724+
return pos += 1, token = SyntaxKind.Unknown;
17361725
}
1737-
return token = SyntaxKind.EndOfFileToken;
17381726
}
17391727

17401728
function speculationHelper<T>(callback: () => T, isLookahead: boolean): T {

0 commit comments

Comments
 (0)