From b552613fb5270a3e163d4287b888a9e0a2165a14 Mon Sep 17 00:00:00 2001 From: Jason Freeman Date: Fri, 12 Dec 2014 14:13:46 -0800 Subject: [PATCH 1/2] Switch parsePrimaryExpression to if-else style --- src/compiler/parser.ts | 62 +++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index b490b1d6826..1a3a87952d1 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -2669,35 +2669,41 @@ module ts { } function parsePrimaryExpression(): PrimaryExpression { - switch (token) { - case SyntaxKind.ThisKeyword: - case SyntaxKind.SuperKeyword: - case SyntaxKind.NullKeyword: - case SyntaxKind.TrueKeyword: - case SyntaxKind.FalseKeyword: - return parseTokenNode(); - case SyntaxKind.NumericLiteral: - case SyntaxKind.StringLiteral: - case SyntaxKind.NoSubstitutionTemplateLiteral: + if (token === SyntaxKind.ThisKeyword || + token === SyntaxKind.SuperKeyword || + token === SyntaxKind.NullKeyword || + token === SyntaxKind.TrueKeyword || + token === SyntaxKind.FalseKeyword) { + return parseTokenNode(); + } + else if (token === SyntaxKind.NumericLiteral || + token === SyntaxKind.StringLiteral || + token === SyntaxKind.NoSubstitutionTemplateLiteral) { + return parseLiteralNode(); + } + else if (token === SyntaxKind.OpenParenToken) { + return parseParenthesizedExpression(); + } + else if (token === SyntaxKind.OpenBracketToken) { + return parseArrayLiteralExpression(); + } + else if (token === SyntaxKind.OpenBraceToken) { + return parseObjectLiteralExpression(); + } + else if (token === SyntaxKind.FunctionKeyword) { + return parseFunctionExpression(); + } + else if (token === SyntaxKind.NewKeyword) { + return parseNewExpression(); + } + else if (token === SyntaxKind.SlashToken || + token === SyntaxKind.SlashEqualsToken) { + if (reScanSlashToken() === SyntaxKind.RegularExpressionLiteral) { return parseLiteralNode(); - case SyntaxKind.OpenParenToken: - return parseParenthesizedExpression(); - case SyntaxKind.OpenBracketToken: - return parseArrayLiteralExpression(); - case SyntaxKind.OpenBraceToken: - return parseObjectLiteralExpression(); - case SyntaxKind.FunctionKeyword: - return parseFunctionExpression(); - case SyntaxKind.NewKeyword: - return parseNewExpression(); - case SyntaxKind.SlashToken: - case SyntaxKind.SlashEqualsToken: - if (reScanSlashToken() === SyntaxKind.RegularExpressionLiteral) { - return parseLiteralNode(); - } - break; - case SyntaxKind.TemplateHead: - return parseTemplateExpression(); + } + } + else if (token === SyntaxKind.TemplateHead) { + return parseTemplateExpression(); } return parseIdentifier(Diagnostics.Expression_expected); From eaf1c5aa5fd71b48fb5f5c9f67d215228ea08380 Mon Sep 17 00:00:00 2001 From: Jason Freeman Date: Tue, 16 Dec 2014 11:25:22 -0800 Subject: [PATCH 2/2] Change the order of switch statements instead of converting to if-else --- src/compiler/parser.ts | 62 +++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 1a3a87952d1..491735882f8 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -2669,41 +2669,35 @@ module ts { } function parsePrimaryExpression(): PrimaryExpression { - if (token === SyntaxKind.ThisKeyword || - token === SyntaxKind.SuperKeyword || - token === SyntaxKind.NullKeyword || - token === SyntaxKind.TrueKeyword || - token === SyntaxKind.FalseKeyword) { - return parseTokenNode(); - } - else if (token === SyntaxKind.NumericLiteral || - token === SyntaxKind.StringLiteral || - token === SyntaxKind.NoSubstitutionTemplateLiteral) { - return parseLiteralNode(); - } - else if (token === SyntaxKind.OpenParenToken) { - return parseParenthesizedExpression(); - } - else if (token === SyntaxKind.OpenBracketToken) { - return parseArrayLiteralExpression(); - } - else if (token === SyntaxKind.OpenBraceToken) { - return parseObjectLiteralExpression(); - } - else if (token === SyntaxKind.FunctionKeyword) { - return parseFunctionExpression(); - } - else if (token === SyntaxKind.NewKeyword) { - return parseNewExpression(); - } - else if (token === SyntaxKind.SlashToken || - token === SyntaxKind.SlashEqualsToken) { - if (reScanSlashToken() === SyntaxKind.RegularExpressionLiteral) { + switch (token) { + case SyntaxKind.NumericLiteral: + case SyntaxKind.StringLiteral: + case SyntaxKind.NoSubstitutionTemplateLiteral: return parseLiteralNode(); - } - } - else if (token === SyntaxKind.TemplateHead) { - return parseTemplateExpression(); + case SyntaxKind.ThisKeyword: + case SyntaxKind.SuperKeyword: + case SyntaxKind.NullKeyword: + case SyntaxKind.TrueKeyword: + case SyntaxKind.FalseKeyword: + return parseTokenNode(); + case SyntaxKind.OpenParenToken: + return parseParenthesizedExpression(); + case SyntaxKind.OpenBracketToken: + return parseArrayLiteralExpression(); + case SyntaxKind.OpenBraceToken: + return parseObjectLiteralExpression(); + case SyntaxKind.FunctionKeyword: + return parseFunctionExpression(); + case SyntaxKind.NewKeyword: + return parseNewExpression(); + case SyntaxKind.SlashToken: + case SyntaxKind.SlashEqualsToken: + if (reScanSlashToken() === SyntaxKind.RegularExpressionLiteral) { + return parseLiteralNode(); + } + break; + case SyntaxKind.TemplateHead: + return parseTemplateExpression(); } return parseIdentifier(Diagnostics.Expression_expected);