Skip to content

Commit 114987e

Browse files
Rename method, also remove unnecessary loop when parsing conditional expressions.
1 parent e70005b commit 114987e

1 file changed

Lines changed: 18 additions & 17 deletions

File tree

src/compiler/parser.ts

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2184,9 +2184,9 @@ module ts {
21842184
// AssignmentExpression[in]
21852185
// Expression[in] , AssignmentExpression[in]
21862186

2187-
var expr = parseAssignmentExpression();
2187+
var expr = parseAssignmentExpressionOrHigher();
21882188
while (parseOptional(SyntaxKind.CommaToken)) {
2189-
expr = makeBinaryExpression(expr, SyntaxKind.CommaToken, parseAssignmentExpression());
2189+
expr = makeBinaryExpression(expr, SyntaxKind.CommaToken, parseAssignmentExpressionOrHigher());
21902190
}
21912191
return expr;
21922192
}
@@ -2212,10 +2212,10 @@ module ts {
22122212
// = AssignmentExpression[?In, ?Yield]
22132213

22142214
parseExpected(SyntaxKind.EqualsToken);
2215-
return parseAssignmentExpression();
2215+
return parseAssignmentExpressionOrHigher();
22162216
}
22172217

2218-
function parseAssignmentExpression(): Expression {
2218+
function parseAssignmentExpressionOrHigher(): Expression {
22192219
// AssignmentExpression[in,yield]:
22202220
// 1) ConditionalExpression[?in,?yield]
22212221
// 2) LeftHandSideExpression = AssignmentExpression[?in,?yield]
@@ -2257,7 +2257,7 @@ module ts {
22572257
if (isLeftHandSideExpression(expr) && isAssignmentOperator(token)) {
22582258
var operator = token;
22592259
nextToken();
2260-
return makeBinaryExpression(expr, operator, parseAssignmentExpression());
2260+
return makeBinaryExpression(expr, operator, parseAssignmentExpressionOrHigher());
22612261
}
22622262

22632263
// otherwise this was production '1'. Return whatever we parsed so far.
@@ -2313,7 +2313,7 @@ module ts {
23132313
if (!scanner.hasPrecedingLineBreak() &&
23142314
(token === SyntaxKind.AsteriskToken || isStartOfExpression())) {
23152315
node.asteriskToken = parseOptionalToken(SyntaxKind.AsteriskToken);
2316-
node.expression = parseAssignmentExpression();
2316+
node.expression = parseAssignmentExpressionOrHigher();
23172317
return finishNode(node);
23182318
}
23192319
else {
@@ -2499,7 +2499,7 @@ module ts {
24992499
body = parseFunctionBlock(/*allowYield:*/ false, /* ignoreMissingOpenBrace */ true);
25002500
}
25012501
else {
2502-
body = parseAssignmentExpression();
2502+
body = parseAssignmentExpressionOrHigher();
25032503
}
25042504

25052505
return makeFunctionExpression(SyntaxKind.ArrowFunction, pos, /*asteriskToken:*/ undefined, /*name:*/ undefined, sig, body);
@@ -2510,15 +2510,16 @@ module ts {
25102510
// we do not that for the 'whenFalse' part.
25112511

25122512
var expr = parseBinaryOperators(parseUnaryExpression(), /*minPrecedence:*/ 0);
2513-
while (parseOptional(SyntaxKind.QuestionToken)) {
2514-
var node = <ConditionalExpression>createNode(SyntaxKind.ConditionalExpression, expr.pos);
2515-
node.condition = expr;
2516-
node.whenTrue = allowInAnd(parseAssignmentExpression);
2517-
parseExpected(SyntaxKind.ColonToken);
2518-
node.whenFalse = parseAssignmentExpression();
2519-
expr = finishNode(node);
2513+
if (!parseOptional(SyntaxKind.QuestionToken)) {
2514+
return expr;
25202515
}
2521-
return expr;
2516+
2517+
var node = <ConditionalExpression>createNode(SyntaxKind.ConditionalExpression, expr.pos);
2518+
node.condition = expr;
2519+
node.whenTrue = allowInAnd(parseAssignmentExpressionOrHigher);
2520+
parseExpected(SyntaxKind.ColonToken);
2521+
node.whenFalse = parseAssignmentExpressionOrHigher();
2522+
return finishNode(node);
25222523
}
25232524

25242525
function parseBinaryOperators(expr: Expression, minPrecedence: number): Expression {
@@ -2816,7 +2817,7 @@ module ts {
28162817
function parseAssignmentExpressionOrOmittedExpression(): Expression {
28172818
return token === SyntaxKind.CommaToken
28182819
? createNode(SyntaxKind.OmittedExpression)
2819-
: parseAssignmentExpression();
2820+
: parseAssignmentExpressionOrHigher();
28202821
}
28212822

28222823
function parseArrayLiteralElement(): Expression {
@@ -2875,7 +2876,7 @@ module ts {
28752876
node = <PropertyDeclaration>createNode(SyntaxKind.PropertyAssignment, nodePos);
28762877
node.name = propertyName;
28772878
parseExpected(SyntaxKind.ColonToken);
2878-
(<PropertyDeclaration>node).initializer = allowInAnd(parseAssignmentExpression);
2879+
(<PropertyDeclaration>node).initializer = allowInAnd(parseAssignmentExpressionOrHigher);
28792880
}
28802881

28812882
node.flags = flags;

0 commit comments

Comments
 (0)