(node, outermostLabeledStatement, convertedLoopBodyStatements, ancestorFacts)
| 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 | * |
nothing calls this directly
no test coverage detected