Make getPostfixSyntaxKind easier to read

This commit is contained in:
Nathan Shively-Sanders
2017-09-01 10:52:48 -07:00
parent e2d2f448e4
commit 68ea88402a

View File

@@ -2742,8 +2742,8 @@ namespace ts {
function parsePostfixTypeOrHigher(): TypeNode {
let kind: SyntaxKind | undefined;
let type = parseNonArrayType();
while (!scanner.hasPrecedingLineBreak() && (kind = getPostfixTypeKind(token()))) {
if (kind === SyntaxKind.ArrayType) {
while (!scanner.hasPrecedingLineBreak() && (kind = getPostfixSyntaxKind(token()))) {
if (kind === SyntaxKind.OpenBracketToken) {
parseExpected(SyntaxKind.OpenBracketToken);
if (isStartOfType()) {
const node = createNode(SyntaxKind.IndexedAccessType, type.pos) as IndexedAccessTypeNode;
@@ -2769,17 +2769,19 @@ namespace ts {
return type;
}
function getPostfixTypeKind(tokenKind: SyntaxKind): SyntaxKind | undefined {
function getPostfixSyntaxKind(tokenKind: SyntaxKind): SyntaxKind {
switch (tokenKind) {
case SyntaxKind.EqualsToken:
// only parse postfix = inside jsdoc, because it's ambiguous elsewhere
return contextFlags & NodeFlags.JSDoc ? SyntaxKind.JSDocOptionalType : undefined;
return contextFlags & NodeFlags.JSDoc ? SyntaxKind.JSDocOptionalType : 0;
case SyntaxKind.ExclamationToken:
return SyntaxKind.JSDocNonNullableType;
case SyntaxKind.QuestionToken:
return SyntaxKind.JSDocNullableType;
case SyntaxKind.OpenBracketToken:
return SyntaxKind.ArrayType;
return SyntaxKind.OpenBracketToken;
default:
return 0;
}
}