MCPcopy Index your code
hub / github.com/nodejs/node / convertForOfStatementForIterable

Function convertForOfStatementForIterable

test/fixtures/snapshot/typescript.js:100296–100336  ·  view source on GitHub ↗
(node, outermostLabeledStatement, convertedLoopBodyStatements, ancestorFacts)

Source from the content-addressed store, hash-verified

100294 return factory.restoreEnclosingLabel(forStatement, outermostLabeledStatement, convertedLoopState && resetLabel);
100295 }
100296 function convertForOfStatementForIterable(node, outermostLabeledStatement, convertedLoopBodyStatements, ancestorFacts) {
100297 var expression = ts.visitNode(node.expression, visitor, ts.isExpression);
100298 var iterator = ts.isIdentifier(expression) ? factory.getGeneratedNameForNode(expression) : factory.createTempVariable(/*recordTempVariable*/ undefined);
100299 var result = ts.isIdentifier(expression) ? factory.getGeneratedNameForNode(iterator) : factory.createTempVariable(/*recordTempVariable*/ undefined);
100300 var errorRecord = factory.createUniqueName("e");
100301 var catchVariable = factory.getGeneratedNameForNode(errorRecord);
100302 var returnMethod = factory.createTempVariable(/*recordTempVariable*/ undefined);
100303 var values = ts.setTextRange(emitHelpers().createValuesHelper(expression), node.expression);
100304 var next = factory.createCallExpression(factory.createPropertyAccessExpression(iterator, "next"), /*typeArguments*/ undefined, []);
100305 hoistVariableDeclaration(errorRecord);
100306 hoistVariableDeclaration(returnMethod);
100307 // if we are enclosed in an outer loop ensure we reset 'errorRecord' per each iteration
100308 var initializer = ancestorFacts & 1024 /* HierarchyFacts.IterationContainer */
100309 ? factory.inlineExpressions([factory.createAssignment(errorRecord, factory.createVoidZero()), values])
100310 : values;
100311 var forStatement = ts.setEmitFlags(ts.setTextRange(factory.createForStatement(
100312 /*initializer*/ ts.setEmitFlags(ts.setTextRange(factory.createVariableDeclarationList([
100313 ts.setTextRange(factory.createVariableDeclaration(iterator, /*exclamationToken*/ undefined, /*type*/ undefined, initializer), node.expression),
100314 factory.createVariableDeclaration(result, /*exclamationToken*/ undefined, /*type*/ undefined, next)
100315 ]), node.expression), 2097152 /* EmitFlags.NoHoisting */),
100316 /*condition*/ factory.createLogicalNot(factory.createPropertyAccessExpression(result, "done")),
100317 /*incrementor*/ factory.createAssignment(result, next),
100318 /*statement*/ convertForOfStatementHead(node, factory.createPropertyAccessExpression(result, "value"), convertedLoopBodyStatements)),
100319 /*location*/ node), 256 /* EmitFlags.NoTokenTrailingSourceMaps */);
100320 return factory.createTryStatement(factory.createBlock([
100321 factory.restoreEnclosingLabel(forStatement, outermostLabeledStatement, convertedLoopState && resetLabel)
100322 ]), factory.createCatchClause(factory.createVariableDeclaration(catchVariable), ts.setEmitFlags(factory.createBlock([
100323 factory.createExpressionStatement(factory.createAssignment(errorRecord, factory.createObjectLiteralExpression([
100324 factory.createPropertyAssignment("error", catchVariable)
100325 ])))
100326 ]), 1 /* EmitFlags.SingleLine */)), factory.createBlock([
100327 factory.createTryStatement(
100328 /*tryBlock*/ factory.createBlock([
100329 ts.setEmitFlags(factory.createIfStatement(factory.createLogicalAnd(factory.createLogicalAnd(result, factory.createLogicalNot(factory.createPropertyAccessExpression(result, "done"))), factory.createAssignment(returnMethod, factory.createPropertyAccessExpression(iterator, "return"))), factory.createExpressionStatement(factory.createFunctionCallCall(returnMethod, iterator, []))), 1 /* EmitFlags.SingleLine */),
100330 ]),
100331 /*catchClause*/ undefined,
100332 /*finallyBlock*/ ts.setEmitFlags(factory.createBlock([
100333 ts.setEmitFlags(factory.createIfStatement(errorRecord, factory.createThrowStatement(factory.createPropertyAccessExpression(errorRecord, "error"))), 1 /* EmitFlags.SingleLine */)
100334 ]), 1 /* EmitFlags.SingleLine */))
100335 ]));
100336 }
100337 /**
100338 * Visits an ObjectLiteralExpression with computed property names.
100339 *

Callers

nothing calls this directly

Calls 3

emitHelpersFunction · 0.85
hoistVariableDeclarationFunction · 0.85

Tested by

no test coverage detected