Fixed crashed related to emptied labeled statements in converted loop bodies (#59434)

This commit is contained in:
Mateusz Burzyński
2024-07-26 23:34:48 +02:00
committed by GitHub
parent 574ae44fd4
commit 9757109caf
16 changed files with 462 additions and 2 deletions

View File

@@ -2946,7 +2946,7 @@ export function transformES2015(context: TransformationContext): (x: SourceFile
const statement = unwrapInnermostStatementOfLabel(node, convertedLoopState && recordLabel);
return isIterationStatement(statement, /*lookInLabeledStatements*/ false)
? visitIterationStatement(statement, /*outermostLabeledStatement*/ node)
: factory.restoreEnclosingLabel(Debug.checkDefined(visitNode(statement, visitor, isStatement, factory.liftToBlock)), node, convertedLoopState && resetLabel);
: factory.restoreEnclosingLabel(visitNode(statement, visitor, isStatement, factory.liftToBlock) ?? setTextRange(factory.createEmptyStatement(), statement), node, convertedLoopState && resetLabel);
}
function visitIterationStatement(node: IterationStatement, outermostLabeledStatement: LabeledStatement) {

View File

@@ -993,7 +993,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile
return factory.updateLabeledStatement(
node,
node.label,
visitNode(node.statement, topLevelNestedVisitor, isStatement, factory.liftToBlock) ?? factory.createExpressionStatement(factory.createIdentifier("")),
visitNode(node.statement, topLevelNestedVisitor, isStatement, factory.liftToBlock) ?? setTextRange(factory.createEmptyStatement(), node.statement),
);
}