Skip to content

expose createExpressionStatement and updateExpressionStatement #25348

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 2, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions src/compiler/factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1531,13 +1531,6 @@ namespace ts {
return block;
}

/* @internal */
export function createExpressionStatement(expression: Expression): ExpressionStatement {
const node = <ExpressionStatement>createSynthesizedNode(SyntaxKind.ExpressionStatement);
node.expression = expression;
return node;
}

export function updateBlock(node: Block, statements: ReadonlyArray<Statement>) {
return node.statements !== statements
? updateNode(createBlock(statements, node.multiLine), node)
Expand All @@ -1563,16 +1556,23 @@ namespace ts {
return <EmptyStatement>createSynthesizedNode(SyntaxKind.EmptyStatement);
}

export function createStatement(expression: Expression) {
return createExpressionStatement(parenthesizeExpressionForExpressionStatement(expression));
export function createExpressionStatement(expression: Expression): ExpressionStatement {
const node = <ExpressionStatement>createSynthesizedNode(SyntaxKind.ExpressionStatement);
node.expression = parenthesizeExpressionForExpressionStatement(expression);
return node;
}

export function updateStatement(node: ExpressionStatement, expression: Expression) {
export function updateExpressionStatement(node: ExpressionStatement, expression: Expression) {
return node.expression !== expression
? updateNode(createStatement(expression), node)
? updateNode(createExpressionStatement(expression), node)
: node;
}

/** @deprecated Use `createExpressionStatement` instead. */
export const createStatement = createExpressionStatement;
/** @deprecated Use `updateExpressionStatement` instead. */
export const updateStatement = updateExpressionStatement;

export function createIf(expression: Expression, thenStatement: Statement, elseStatement?: Statement) {
const node = <IfStatement>createSynthesizedNode(SyntaxKind.IfStatement);
node.expression = expression;
Expand Down
32 changes: 16 additions & 16 deletions src/compiler/transformers/es2015.ts
Original file line number Diff line number Diff line change
Expand Up @@ -855,7 +855,7 @@ namespace ts {
if (extendsClauseElement) {
statements.push(
setTextRange(
createStatement(
createExpressionStatement(
createExtendsHelper(context, getInternalName(node))
),
/*location*/ extendsClauseElement
Expand Down Expand Up @@ -1280,7 +1280,7 @@ namespace ts {
else if (initializer) {
statements.push(
setEmitFlags(
createStatement(
createExpressionStatement(
createAssignment(
temp,
visitNode(initializer, visitor, isExpression)
Expand All @@ -1307,7 +1307,7 @@ namespace ts {
setEmitFlags(
setTextRange(
createBlock([
createStatement(
createExpressionStatement(
setEmitFlags(
setTextRange(
createAssignment(
Expand Down Expand Up @@ -1409,7 +1409,7 @@ namespace ts {
createBlock([
startOnNewLine(
setTextRange(
createStatement(
createExpressionStatement(
createAssignment(
createElementAccess(
expressionName,
Expand Down Expand Up @@ -1594,7 +1594,7 @@ namespace ts {
setSourceMapRange(memberFunction, sourceMapRange);

const statement = setTextRange(
createStatement(
createExpressionStatement(
createAssignment(memberName, memberFunction)
),
/*location*/ member
Expand All @@ -1619,7 +1619,7 @@ namespace ts {
* @param accessors The set of related get/set accessors.
*/
function transformAccessorsToStatement(receiver: LeftHandSideExpression, accessors: AllAccessorDeclarations, container: Node): Statement {
const statement = createStatement(transformAccessorsToExpression(receiver, accessors, container, /*startsOnNewLine*/ false));
const statement = createExpressionStatement(transformAccessorsToExpression(receiver, accessors, container, /*startsOnNewLine*/ false));
// The location for the statement is used to emit source maps only.
// No comments should be emitted for this statement to align with the
// old emitter.
Expand Down Expand Up @@ -1949,9 +1949,9 @@ namespace ts {
// If we are here it is most likely because our expression is a destructuring assignment.
switch (node.expression.kind) {
case SyntaxKind.ParenthesizedExpression:
return updateStatement(node, visitParenthesizedExpression(<ParenthesizedExpression>node.expression, /*needsDestructuringValue*/ false));
return updateExpressionStatement(node, visitParenthesizedExpression(<ParenthesizedExpression>node.expression, /*needsDestructuringValue*/ false));
case SyntaxKind.BinaryExpression:
return updateStatement(node, visitBinaryExpression(<BinaryExpression>node.expression, /*needsDestructuringValue*/ false));
return updateExpressionStatement(node, visitBinaryExpression(<BinaryExpression>node.expression, /*needsDestructuringValue*/ false));
}
return visitEachChild(node, visitor, context);
}
Expand Down Expand Up @@ -2026,7 +2026,7 @@ namespace ts {
}
}
if (assignments) {
updated = setTextRange(createStatement(inlineExpressions(assignments)), node);
updated = setTextRange(createExpressionStatement(inlineExpressions(assignments)), node);
}
else {
// none of declarations has initializer - the entire variable statement can be deleted
Expand Down Expand Up @@ -2330,11 +2330,11 @@ namespace ts {
const assignment = createAssignment(initializer, boundValue);
if (isDestructuringAssignment(assignment)) {
aggregateTransformFlags(assignment);
statements.push(createStatement(visitBinaryExpression(assignment, /*needsDestructuringValue*/ false)));
statements.push(createExpressionStatement(visitBinaryExpression(assignment, /*needsDestructuringValue*/ false)));
}
else {
assignment.end = initializer.end;
statements.push(setTextRange(createStatement(visitNode(assignment, visitor, isExpression)), moveRangeEnd(initializer, -1)));
statements.push(setTextRange(createExpressionStatement(visitNode(assignment, visitor, isExpression)), moveRangeEnd(initializer, -1)));
}
}

Expand Down Expand Up @@ -2483,7 +2483,7 @@ namespace ts {
createCatchClause(createVariableDeclaration(catchVariable),
setEmitFlags(
createBlock([
createStatement(
createExpressionStatement(
createAssignment(
errorRecord,
createObjectLiteral([
Expand Down Expand Up @@ -2512,7 +2512,7 @@ namespace ts {
createPropertyAccess(iterator, "return")
)
),
createStatement(
createExpressionStatement(
createFunctionCall(returnMethod, iterator, [])
)
),
Expand Down Expand Up @@ -2868,7 +2868,7 @@ namespace ts {

function copyOutParameters(outParams: LoopOutParameter[], copyDirection: CopyDirection, statements: Statement[]): void {
for (const outParam of outParams) {
statements.push(createStatement(copyOutParameter(outParam, copyDirection)));
statements.push(createExpressionStatement(copyOutParameter(outParam, copyDirection)));
}
}

Expand All @@ -2892,7 +2892,7 @@ namespace ts {
)
: call;
if (isSimpleLoop) {
statements.push(createStatement(callResult));
statements.push(createExpressionStatement(callResult));
copyOutParameters(state.loopOutParameters!, CopyDirection.ToOriginal, statements);
}
else {
Expand Down Expand Up @@ -3358,7 +3358,7 @@ namespace ts {

// Add the class alias following the declaration.
statements.push(
createStatement(
createExpressionStatement(
createAssignment(
aliasAssignment.left,
cast(variable.name, isIdentifier)
Expand Down
2 changes: 1 addition & 1 deletion src/compiler/transformers/es2017.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ namespace ts {
function visitVariableStatementInAsyncBody(node: VariableStatement) {
if (isVariableDeclarationListWithCollidingName(node.declarationList)) {
const expression = visitVariableDeclarationListWithCollidingNames(node.declarationList, /*hasReceiver*/ false);
return expression ? createStatement(expression) : undefined;
return expression ? createExpressionStatement(expression) : undefined;
}
return visitEachChild(node, visitor, context);
}
Expand Down
4 changes: 2 additions & 2 deletions src/compiler/transformers/esnext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ namespace ts {
createVariableDeclaration(catchVariable),
setEmitFlags(
createBlock([
createStatement(
createExpressionStatement(
createAssignment(
errorRecord,
createObjectLiteral([
Expand All @@ -473,7 +473,7 @@ namespace ts {
createPropertyAccess(iterator, "return")
)
),
createStatement(createDownlevelAwait(callReturn))
createExpressionStatement(createDownlevelAwait(callReturn))
),
EmitFlags.SingleLine
)
Expand Down
22 changes: 11 additions & 11 deletions src/compiler/transformers/generators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,7 @@ namespace ts {
}

return setSourceMapRange(
createStatement(
createExpressionStatement(
inlineExpressions(
map(variables, transformInitializedVariable)
)
Expand Down Expand Up @@ -872,7 +872,7 @@ namespace ts {
}
else {
if (containsYield(node) && pendingExpressions.length > 0) {
emitWorker(OpCode.Statement, [createStatement(inlineExpressions(pendingExpressions))]);
emitWorker(OpCode.Statement, [createExpressionStatement(inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}

Expand Down Expand Up @@ -1067,7 +1067,7 @@ namespace ts {

function reduceProperty(expressions: Expression[], property: ObjectLiteralElementLike) {
if (containsYield(property) && expressions.length > 0) {
emitStatement(createStatement(inlineExpressions(expressions)));
emitStatement(createExpressionStatement(inlineExpressions(expressions)));
expressions = [];
}

Expand Down Expand Up @@ -1270,7 +1270,7 @@ namespace ts {
}

if (pendingExpressions.length) {
emitStatement(createStatement(inlineExpressions(pendingExpressions)));
emitStatement(createExpressionStatement(inlineExpressions(pendingExpressions)));
variablesWritten += pendingExpressions.length;
pendingExpressions = [];
}
Expand Down Expand Up @@ -1441,7 +1441,7 @@ namespace ts {
else {
emitStatement(
setTextRange(
createStatement(
createExpressionStatement(
visitNode(initializer, visitor, isExpression)
),
initializer
Expand All @@ -1461,7 +1461,7 @@ namespace ts {
if (node.incrementor) {
emitStatement(
setTextRange(
createStatement(
createExpressionStatement(
visitNode(node.incrementor, visitor, isExpression)
),
node.incrementor
Expand Down Expand Up @@ -1543,7 +1543,7 @@ namespace ts {
createForIn(
key,
visitNode(node.expression, visitor, isExpression),
createStatement(
createExpressionStatement(
createCall(
createPropertyAccess(keysArray, "push"),
/*typeArguments*/ undefined,
Expand Down Expand Up @@ -1579,7 +1579,7 @@ namespace ts {
transformAndEmitEmbeddedStatement(node.statement);

markLabel(incrementLabel);
emitStatement(createStatement(createPostfixIncrement(keysIndex)));
emitStatement(createExpressionStatement(createPostfixIncrement(keysIndex)));

emitBreak(conditionLabel);
endLoopBlock();
Expand Down Expand Up @@ -2778,7 +2778,7 @@ namespace ts {
// for each block in the protected region.
const { startLabel, catchLabel, finallyLabel, endLabel } = currentExceptionBlock;
statements.unshift(
createStatement(
createExpressionStatement(
createCall(
createPropertyAccess(createPropertyAccess(state, "trys"), "push"),
/*typeArguments*/ undefined,
Expand All @@ -2801,7 +2801,7 @@ namespace ts {
// The case clause for the last label falls through to this label, so we
// add an assignment statement to reflect the change in labels.
statements.push(
createStatement(
createExpressionStatement(
createAssignment(
createPropertyAccess(state, "label"),
createLiteral(labelNumber + 1)
Expand Down Expand Up @@ -2985,7 +2985,7 @@ namespace ts {
* @param operationLocation The source map location for the operation.
*/
function writeAssign(left: Expression, right: Expression, operationLocation: TextRange | undefined): void {
writeStatement(setTextRange(createStatement(createAssignment(left, right)), operationLocation));
writeStatement(setTextRange(createExpressionStatement(createAssignment(left, right)), operationLocation));
}

/**
Expand Down
Loading