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

Function transformAsyncGeneratorFunctionBody

test/fixtures/snapshot/typescript.js:97137–97174  ·  view source on GitHub ↗
(node)

Source from the content-addressed store, hash-verified

97135 return updated;
97136 }
97137 function transformAsyncGeneratorFunctionBody(node) {
97138 resumeLexicalEnvironment();
97139 var statements = [];
97140 var statementOffset = factory.copyPrologue(node.body.statements, statements, /*ensureUseStrict*/ false, visitor);
97141 appendObjectRestAssignmentsIfNeeded(statements, node);
97142 var savedCapturedSuperProperties = capturedSuperProperties;
97143 var savedHasSuperElementAccess = hasSuperElementAccess;
97144 capturedSuperProperties = new ts.Set();
97145 hasSuperElementAccess = false;
97146 var returnStatement = factory.createReturnStatement(emitHelpers().createAsyncGeneratorHelper(factory.createFunctionExpression(
97147 /*modifiers*/ undefined, factory.createToken(41 /* SyntaxKind.AsteriskToken */), node.name && factory.getGeneratedNameForNode(node.name),
97148 /*typeParameters*/ undefined,
97149 /*parameters*/ [],
97150 /*type*/ undefined, factory.updateBlock(node.body, ts.visitLexicalEnvironment(node.body.statements, visitor, context, statementOffset))), !!(hierarchyFacts & 1 /* HierarchyFacts.HasLexicalThis */)));
97151 // Minor optimization, emit `_super` helper to capture `super` access in an arrow.
97152 // This step isn't needed if we eventually transform this to ES5.
97153 var emitSuperHelpers = languageVersion >= 2 /* ScriptTarget.ES2015 */ && resolver.getNodeCheckFlags(node) & (4096 /* NodeCheckFlags.AsyncMethodWithSuperBinding */ | 2048 /* NodeCheckFlags.AsyncMethodWithSuper */);
97154 if (emitSuperHelpers) {
97155 enableSubstitutionForAsyncMethodsWithSuper();
97156 var variableStatement = ts.createSuperAccessVariableStatement(factory, resolver, node, capturedSuperProperties);
97157 substitutedSuperAccessors[ts.getNodeId(variableStatement)] = true;
97158 ts.insertStatementsAfterStandardPrologue(statements, [variableStatement]);
97159 }
97160 statements.push(returnStatement);
97161 ts.insertStatementsAfterStandardPrologue(statements, endLexicalEnvironment());
97162 var block = factory.updateBlock(node.body, statements);
97163 if (emitSuperHelpers && hasSuperElementAccess) {
97164 if (resolver.getNodeCheckFlags(node) & 4096 /* NodeCheckFlags.AsyncMethodWithSuperBinding */) {
97165 ts.addEmitHelper(block, ts.advancedAsyncSuperHelper);
97166 }
97167 else if (resolver.getNodeCheckFlags(node) & 2048 /* NodeCheckFlags.AsyncMethodWithSuper */) {
97168 ts.addEmitHelper(block, ts.asyncSuperHelper);
97169 }
97170 }
97171 capturedSuperProperties = savedCapturedSuperProperties;
97172 hasSuperElementAccess = savedHasSuperElementAccess;
97173 return block;
97174 }
97175 function transformFunctionBody(node) {
97176 var _a;
97177 resumeLexicalEnvironment();

Callers 3

visitMethodDeclarationFunction · 0.85
visitFunctionDeclarationFunction · 0.85
visitFunctionExpressionFunction · 0.85

Calls 6

resumeLexicalEnvironmentFunction · 0.85
emitHelpersFunction · 0.85
endLexicalEnvironmentFunction · 0.85
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…