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

Function transformGeneratorFunctionBody

test/fixtures/snapshot/typescript.js:102215–102267  ·  view source on GitHub ↗

* Transforms the body of a generator function declaration. * * @param node The function body to transform.

(body)

Source from the content-addressed store, hash-verified

102213 * @param node The function body to transform.
102214 */
102215 function transformGeneratorFunctionBody(body) {
102216 // Save existing generator state
102217 var statements = [];
102218 var savedInGeneratorFunctionBody = inGeneratorFunctionBody;
102219 var savedInStatementContainingYield = inStatementContainingYield;
102220 var savedBlocks = blocks;
102221 var savedBlockOffsets = blockOffsets;
102222 var savedBlockActions = blockActions;
102223 var savedBlockStack = blockStack;
102224 var savedLabelOffsets = labelOffsets;
102225 var savedLabelExpressions = labelExpressions;
102226 var savedNextLabelId = nextLabelId;
102227 var savedOperations = operations;
102228 var savedOperationArguments = operationArguments;
102229 var savedOperationLocations = operationLocations;
102230 var savedState = state;
102231 // Initialize generator state
102232 inGeneratorFunctionBody = true;
102233 inStatementContainingYield = false;
102234 blocks = undefined;
102235 blockOffsets = undefined;
102236 blockActions = undefined;
102237 blockStack = undefined;
102238 labelOffsets = undefined;
102239 labelExpressions = undefined;
102240 nextLabelId = 1;
102241 operations = undefined;
102242 operationArguments = undefined;
102243 operationLocations = undefined;
102244 state = factory.createTempVariable(/*recordTempVariable*/ undefined);
102245 // Build the generator
102246 resumeLexicalEnvironment();
102247 var statementOffset = factory.copyPrologue(body.statements, statements, /*ensureUseStrict*/ false, visitor);
102248 transformAndEmitStatements(body.statements, statementOffset);
102249 var buildResult = build();
102250 ts.insertStatementsAfterStandardPrologue(statements, endLexicalEnvironment());
102251 statements.push(factory.createReturnStatement(buildResult));
102252 // Restore previous generator state
102253 inGeneratorFunctionBody = savedInGeneratorFunctionBody;
102254 inStatementContainingYield = savedInStatementContainingYield;
102255 blocks = savedBlocks;
102256 blockOffsets = savedBlockOffsets;
102257 blockActions = savedBlockActions;
102258 blockStack = savedBlockStack;
102259 labelOffsets = savedLabelOffsets;
102260 labelExpressions = savedLabelExpressions;
102261 nextLabelId = savedNextLabelId;
102262 operations = savedOperations;
102263 operationArguments = savedOperationArguments;
102264 operationLocations = savedOperationLocations;
102265 state = savedState;
102266 return ts.setTextRange(factory.createBlock(statements, body.multiLine), body);
102267 }
102268 /**
102269 * Visits a variable statement.
102270 *

Callers 2

visitFunctionDeclarationFunction · 0.85
visitFunctionExpressionFunction · 0.85

Calls 5

resumeLexicalEnvironmentFunction · 0.85
endLexicalEnvironmentFunction · 0.85
buildFunction · 0.70
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…