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

Function transformForAwaitOfStatement

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

Source from the content-addressed store, hash-verified

96951 : factory.createAwaitExpression(expression);
96952 }
96953 function transformForAwaitOfStatement(node, outermostLabeledStatement, ancestorFacts) {
96954 var expression = ts.visitNode(node.expression, visitor, ts.isExpression);
96955 var iterator = ts.isIdentifier(expression) ? factory.getGeneratedNameForNode(expression) : factory.createTempVariable(/*recordTempVariable*/ undefined);
96956 var result = ts.isIdentifier(expression) ? factory.getGeneratedNameForNode(iterator) : factory.createTempVariable(/*recordTempVariable*/ undefined);
96957 var errorRecord = factory.createUniqueName("e");
96958 var catchVariable = factory.getGeneratedNameForNode(errorRecord);
96959 var returnMethod = factory.createTempVariable(/*recordTempVariable*/ undefined);
96960 var callValues = ts.setTextRange(emitHelpers().createAsyncValuesHelper(expression), node.expression);
96961 var callNext = factory.createCallExpression(factory.createPropertyAccessExpression(iterator, "next"), /*typeArguments*/ undefined, []);
96962 var getDone = factory.createPropertyAccessExpression(result, "done");
96963 var getValue = factory.createPropertyAccessExpression(result, "value");
96964 var callReturn = factory.createFunctionCallCall(returnMethod, iterator, []);
96965 hoistVariableDeclaration(errorRecord);
96966 hoistVariableDeclaration(returnMethod);
96967 // if we are enclosed in an outer loop ensure we reset 'errorRecord' per each iteration
96968 var initializer = ancestorFacts & 2 /* HierarchyFacts.IterationContainer */ ?
96969 factory.inlineExpressions([factory.createAssignment(errorRecord, factory.createVoidZero()), callValues]) :
96970 callValues;
96971 var forStatement = ts.setEmitFlags(ts.setTextRange(factory.createForStatement(
96972 /*initializer*/ ts.setEmitFlags(ts.setTextRange(factory.createVariableDeclarationList([
96973 ts.setTextRange(factory.createVariableDeclaration(iterator, /*exclamationToken*/ undefined, /*type*/ undefined, initializer), node.expression),
96974 factory.createVariableDeclaration(result)
96975 ]), node.expression), 2097152 /* EmitFlags.NoHoisting */),
96976 /*condition*/ factory.createComma(factory.createAssignment(result, createDownlevelAwait(callNext)), factory.createLogicalNot(getDone)),
96977 /*incrementor*/ undefined,
96978 /*statement*/ convertForOfStatementHead(node, getValue)),
96979 /*location*/ node), 256 /* EmitFlags.NoTokenTrailingSourceMaps */);
96980 ts.setOriginalNode(forStatement, node);
96981 return factory.createTryStatement(factory.createBlock([
96982 factory.restoreEnclosingLabel(forStatement, outermostLabeledStatement)
96983 ]), factory.createCatchClause(factory.createVariableDeclaration(catchVariable), ts.setEmitFlags(factory.createBlock([
96984 factory.createExpressionStatement(factory.createAssignment(errorRecord, factory.createObjectLiteralExpression([
96985 factory.createPropertyAssignment("error", catchVariable)
96986 ])))
96987 ]), 1 /* EmitFlags.SingleLine */)), factory.createBlock([
96988 factory.createTryStatement(
96989 /*tryBlock*/ factory.createBlock([
96990 ts.setEmitFlags(factory.createIfStatement(factory.createLogicalAnd(factory.createLogicalAnd(result, factory.createLogicalNot(getDone)), factory.createAssignment(returnMethod, factory.createPropertyAccessExpression(iterator, "return"))), factory.createExpressionStatement(createDownlevelAwait(callReturn))), 1 /* EmitFlags.SingleLine */)
96991 ]),
96992 /*catchClause*/ undefined,
96993 /*finallyBlock*/ ts.setEmitFlags(factory.createBlock([
96994 ts.setEmitFlags(factory.createIfStatement(errorRecord, factory.createThrowStatement(factory.createPropertyAccessExpression(errorRecord, "error"))), 1 /* EmitFlags.SingleLine */)
96995 ]), 1 /* EmitFlags.SingleLine */))
96996 ]));
96997 }
96998 function parameterVisitor(node) {
96999 ts.Debug.assertNode(node, ts.isParameter);
97000 return visitParameter(node);

Callers 1

visitForOfStatementFunction · 0.85

Calls 4

emitHelpersFunction · 0.85
hoistVariableDeclarationFunction · 0.85
createDownlevelAwaitFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…