* Transforms the body of a generator function declaration. * * @param node The function body to transform.
(body)
| 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 | * |
no test coverage detected
searching dependent graphs…