Skip to content

Commit 1be9ec3

Browse files
committed
expose createExpressionStatement and updateExpressionStatement
keep a deprecated alias for back-compat Fixes: microsoft#25220
1 parent a1746d4 commit 1be9ec3

9 files changed

Lines changed: 80 additions & 80 deletions

File tree

src/compiler/factory.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1531,13 +1531,6 @@ namespace ts {
15311531
return block;
15321532
}
15331533

1534-
/* @internal */
1535-
export function createExpressionStatement(expression: Expression): ExpressionStatement {
1536-
const node = <ExpressionStatement>createSynthesizedNode(SyntaxKind.ExpressionStatement);
1537-
node.expression = expression;
1538-
return node;
1539-
}
1540-
15411534
export function updateBlock(node: Block, statements: ReadonlyArray<Statement>) {
15421535
return node.statements !== statements
15431536
? updateNode(createBlock(statements, node.multiLine), node)
@@ -1563,16 +1556,23 @@ namespace ts {
15631556
return <EmptyStatement>createSynthesizedNode(SyntaxKind.EmptyStatement);
15641557
}
15651558

1566-
export function createStatement(expression: Expression) {
1567-
return createExpressionStatement(parenthesizeExpressionForExpressionStatement(expression));
1559+
export function createExpressionStatement(expression: Expression): ExpressionStatement {
1560+
const node = <ExpressionStatement>createSynthesizedNode(SyntaxKind.ExpressionStatement);
1561+
node.expression = parenthesizeExpressionForExpressionStatement(expression);
1562+
return node;
15681563
}
15691564

1570-
export function updateStatement(node: ExpressionStatement, expression: Expression) {
1565+
export function updateExpressionStatement(node: ExpressionStatement, expression: Expression) {
15711566
return node.expression !== expression
1572-
? updateNode(createStatement(expression), node)
1567+
? updateNode(createExpressionStatement(expression), node)
15731568
: node;
15741569
}
15751570

1571+
/** @deprecated Use `createExpressionStatement` instead. */
1572+
export const createStatement = createExpressionStatement;
1573+
/** @deprecated Use `updateExpressionStatement` instead. */
1574+
export const updateStatement = updateExpressionStatement;
1575+
15761576
export function createIf(expression: Expression, thenStatement: Statement, elseStatement?: Statement) {
15771577
const node = <IfStatement>createSynthesizedNode(SyntaxKind.IfStatement);
15781578
node.expression = expression;

src/compiler/transformers/es2015.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -855,7 +855,7 @@ namespace ts {
855855
if (extendsClauseElement) {
856856
statements.push(
857857
setTextRange(
858-
createStatement(
858+
createExpressionStatement(
859859
createExtendsHelper(context, getInternalName(node))
860860
),
861861
/*location*/ extendsClauseElement
@@ -1280,7 +1280,7 @@ namespace ts {
12801280
else if (initializer) {
12811281
statements.push(
12821282
setEmitFlags(
1283-
createStatement(
1283+
createExpressionStatement(
12841284
createAssignment(
12851285
temp,
12861286
visitNode(initializer, visitor, isExpression)
@@ -1307,7 +1307,7 @@ namespace ts {
13071307
setEmitFlags(
13081308
setTextRange(
13091309
createBlock([
1310-
createStatement(
1310+
createExpressionStatement(
13111311
setEmitFlags(
13121312
setTextRange(
13131313
createAssignment(
@@ -1409,7 +1409,7 @@ namespace ts {
14091409
createBlock([
14101410
startOnNewLine(
14111411
setTextRange(
1412-
createStatement(
1412+
createExpressionStatement(
14131413
createAssignment(
14141414
createElementAccess(
14151415
expressionName,
@@ -1594,7 +1594,7 @@ namespace ts {
15941594
setSourceMapRange(memberFunction, sourceMapRange);
15951595

15961596
const statement = setTextRange(
1597-
createStatement(
1597+
createExpressionStatement(
15981598
createAssignment(memberName, memberFunction)
15991599
),
16001600
/*location*/ member
@@ -1619,7 +1619,7 @@ namespace ts {
16191619
* @param accessors The set of related get/set accessors.
16201620
*/
16211621
function transformAccessorsToStatement(receiver: LeftHandSideExpression, accessors: AllAccessorDeclarations, container: Node): Statement {
1622-
const statement = createStatement(transformAccessorsToExpression(receiver, accessors, container, /*startsOnNewLine*/ false));
1622+
const statement = createExpressionStatement(transformAccessorsToExpression(receiver, accessors, container, /*startsOnNewLine*/ false));
16231623
// The location for the statement is used to emit source maps only.
16241624
// No comments should be emitted for this statement to align with the
16251625
// old emitter.
@@ -1949,9 +1949,9 @@ namespace ts {
19491949
// If we are here it is most likely because our expression is a destructuring assignment.
19501950
switch (node.expression.kind) {
19511951
case SyntaxKind.ParenthesizedExpression:
1952-
return updateStatement(node, visitParenthesizedExpression(<ParenthesizedExpression>node.expression, /*needsDestructuringValue*/ false));
1952+
return updateExpressionStatement(node, visitParenthesizedExpression(<ParenthesizedExpression>node.expression, /*needsDestructuringValue*/ false));
19531953
case SyntaxKind.BinaryExpression:
1954-
return updateStatement(node, visitBinaryExpression(<BinaryExpression>node.expression, /*needsDestructuringValue*/ false));
1954+
return updateExpressionStatement(node, visitBinaryExpression(<BinaryExpression>node.expression, /*needsDestructuringValue*/ false));
19551955
}
19561956
return visitEachChild(node, visitor, context);
19571957
}
@@ -2026,7 +2026,7 @@ namespace ts {
20262026
}
20272027
}
20282028
if (assignments) {
2029-
updated = setTextRange(createStatement(inlineExpressions(assignments)), node);
2029+
updated = setTextRange(createExpressionStatement(inlineExpressions(assignments)), node);
20302030
}
20312031
else {
20322032
// none of declarations has initializer - the entire variable statement can be deleted
@@ -2330,11 +2330,11 @@ namespace ts {
23302330
const assignment = createAssignment(initializer, boundValue);
23312331
if (isDestructuringAssignment(assignment)) {
23322332
aggregateTransformFlags(assignment);
2333-
statements.push(createStatement(visitBinaryExpression(assignment, /*needsDestructuringValue*/ false)));
2333+
statements.push(createExpressionStatement(visitBinaryExpression(assignment, /*needsDestructuringValue*/ false)));
23342334
}
23352335
else {
23362336
assignment.end = initializer.end;
2337-
statements.push(setTextRange(createStatement(visitNode(assignment, visitor, isExpression)), moveRangeEnd(initializer, -1)));
2337+
statements.push(setTextRange(createExpressionStatement(visitNode(assignment, visitor, isExpression)), moveRangeEnd(initializer, -1)));
23382338
}
23392339
}
23402340

@@ -2483,7 +2483,7 @@ namespace ts {
24832483
createCatchClause(createVariableDeclaration(catchVariable),
24842484
setEmitFlags(
24852485
createBlock([
2486-
createStatement(
2486+
createExpressionStatement(
24872487
createAssignment(
24882488
errorRecord,
24892489
createObjectLiteral([
@@ -2512,7 +2512,7 @@ namespace ts {
25122512
createPropertyAccess(iterator, "return")
25132513
)
25142514
),
2515-
createStatement(
2515+
createExpressionStatement(
25162516
createFunctionCall(returnMethod, iterator, [])
25172517
)
25182518
),
@@ -2868,7 +2868,7 @@ namespace ts {
28682868

28692869
function copyOutParameters(outParams: LoopOutParameter[], copyDirection: CopyDirection, statements: Statement[]): void {
28702870
for (const outParam of outParams) {
2871-
statements.push(createStatement(copyOutParameter(outParam, copyDirection)));
2871+
statements.push(createExpressionStatement(copyOutParameter(outParam, copyDirection)));
28722872
}
28732873
}
28742874

@@ -2892,7 +2892,7 @@ namespace ts {
28922892
)
28932893
: call;
28942894
if (isSimpleLoop) {
2895-
statements.push(createStatement(callResult));
2895+
statements.push(createExpressionStatement(callResult));
28962896
copyOutParameters(state.loopOutParameters!, CopyDirection.ToOriginal, statements);
28972897
}
28982898
else {
@@ -3358,7 +3358,7 @@ namespace ts {
33583358

33593359
// Add the class alias following the declaration.
33603360
statements.push(
3361-
createStatement(
3361+
createExpressionStatement(
33623362
createAssignment(
33633363
aliasAssignment.left,
33643364
cast(variable.name, isIdentifier)

src/compiler/transformers/es2017.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ namespace ts {
144144
function visitVariableStatementInAsyncBody(node: VariableStatement) {
145145
if (isVariableDeclarationListWithCollidingName(node.declarationList)) {
146146
const expression = visitVariableDeclarationListWithCollidingNames(node.declarationList, /*hasReceiver*/ false);
147-
return expression ? createStatement(expression) : undefined;
147+
return expression ? createExpressionStatement(expression) : undefined;
148148
}
149149
return visitEachChild(node, visitor, context);
150150
}

src/compiler/transformers/esnext.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ namespace ts {
446446
createVariableDeclaration(catchVariable),
447447
setEmitFlags(
448448
createBlock([
449-
createStatement(
449+
createExpressionStatement(
450450
createAssignment(
451451
errorRecord,
452452
createObjectLiteral([
@@ -473,7 +473,7 @@ namespace ts {
473473
createPropertyAccess(iterator, "return")
474474
)
475475
),
476-
createStatement(createDownlevelAwait(callReturn))
476+
createExpressionStatement(createDownlevelAwait(callReturn))
477477
),
478478
EmitFlags.SingleLine
479479
)

src/compiler/transformers/generators.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ namespace ts {
637637
}
638638

639639
return setSourceMapRange(
640-
createStatement(
640+
createExpressionStatement(
641641
inlineExpressions(
642642
map(variables, transformInitializedVariable)
643643
)
@@ -872,7 +872,7 @@ namespace ts {
872872
}
873873
else {
874874
if (containsYield(node) && pendingExpressions.length > 0) {
875-
emitWorker(OpCode.Statement, [createStatement(inlineExpressions(pendingExpressions))]);
875+
emitWorker(OpCode.Statement, [createExpressionStatement(inlineExpressions(pendingExpressions))]);
876876
pendingExpressions = [];
877877
}
878878

@@ -1067,7 +1067,7 @@ namespace ts {
10671067

10681068
function reduceProperty(expressions: Expression[], property: ObjectLiteralElementLike) {
10691069
if (containsYield(property) && expressions.length > 0) {
1070-
emitStatement(createStatement(inlineExpressions(expressions)));
1070+
emitStatement(createExpressionStatement(inlineExpressions(expressions)));
10711071
expressions = [];
10721072
}
10731073

@@ -1270,7 +1270,7 @@ namespace ts {
12701270
}
12711271

12721272
if (pendingExpressions.length) {
1273-
emitStatement(createStatement(inlineExpressions(pendingExpressions)));
1273+
emitStatement(createExpressionStatement(inlineExpressions(pendingExpressions)));
12741274
variablesWritten += pendingExpressions.length;
12751275
pendingExpressions = [];
12761276
}
@@ -1441,7 +1441,7 @@ namespace ts {
14411441
else {
14421442
emitStatement(
14431443
setTextRange(
1444-
createStatement(
1444+
createExpressionStatement(
14451445
visitNode(initializer, visitor, isExpression)
14461446
),
14471447
initializer
@@ -1461,7 +1461,7 @@ namespace ts {
14611461
if (node.incrementor) {
14621462
emitStatement(
14631463
setTextRange(
1464-
createStatement(
1464+
createExpressionStatement(
14651465
visitNode(node.incrementor, visitor, isExpression)
14661466
),
14671467
node.incrementor
@@ -1543,7 +1543,7 @@ namespace ts {
15431543
createForIn(
15441544
key,
15451545
visitNode(node.expression, visitor, isExpression),
1546-
createStatement(
1546+
createExpressionStatement(
15471547
createCall(
15481548
createPropertyAccess(keysArray, "push"),
15491549
/*typeArguments*/ undefined,
@@ -1579,7 +1579,7 @@ namespace ts {
15791579
transformAndEmitEmbeddedStatement(node.statement);
15801580

15811581
markLabel(incrementLabel);
1582-
emitStatement(createStatement(createPostfixIncrement(keysIndex)));
1582+
emitStatement(createExpressionStatement(createPostfixIncrement(keysIndex)));
15831583

15841584
emitBreak(conditionLabel);
15851585
endLoopBlock();
@@ -2778,7 +2778,7 @@ namespace ts {
27782778
// for each block in the protected region.
27792779
const { startLabel, catchLabel, finallyLabel, endLabel } = currentExceptionBlock;
27802780
statements.unshift(
2781-
createStatement(
2781+
createExpressionStatement(
27822782
createCall(
27832783
createPropertyAccess(createPropertyAccess(state, "trys"), "push"),
27842784
/*typeArguments*/ undefined,
@@ -2801,7 +2801,7 @@ namespace ts {
28012801
// The case clause for the last label falls through to this label, so we
28022802
// add an assignment statement to reflect the change in labels.
28032803
statements.push(
2804-
createStatement(
2804+
createExpressionStatement(
28052805
createAssignment(
28062806
createPropertyAccess(state, "label"),
28072807
createLiteral(labelNumber + 1)
@@ -2985,7 +2985,7 @@ namespace ts {
29852985
* @param operationLocation The source map location for the operation.
29862986
*/
29872987
function writeAssign(left: Expression, right: Expression, operationLocation: TextRange | undefined): void {
2988-
writeStatement(setTextRange(createStatement(createAssignment(left, right)), operationLocation));
2988+
writeStatement(setTextRange(createExpressionStatement(createAssignment(left, right)), operationLocation));
29892989
}
29902990

29912991
/**

0 commit comments

Comments
 (0)