(flow)
| 70517 | return undefined; |
| 70518 | } |
| 70519 | function getTypeAtFlowArrayMutation(flow) { |
| 70520 | if (declaredType === autoType || declaredType === autoArrayType) { |
| 70521 | var node = flow.node; |
| 70522 | var expr = node.kind === 208 /* SyntaxKind.CallExpression */ ? |
| 70523 | node.expression.expression : |
| 70524 | node.left.expression; |
| 70525 | if (isMatchingReference(reference, getReferenceCandidate(expr))) { |
| 70526 | var flowType = getTypeAtFlowNode(flow.antecedent); |
| 70527 | var type = getTypeFromFlowType(flowType); |
| 70528 | if (ts.getObjectFlags(type) & 256 /* ObjectFlags.EvolvingArray */) { |
| 70529 | var evolvedType_1 = type; |
| 70530 | if (node.kind === 208 /* SyntaxKind.CallExpression */) { |
| 70531 | for (var _i = 0, _a = node.arguments; _i < _a.length; _i++) { |
| 70532 | var arg = _a[_i]; |
| 70533 | evolvedType_1 = addEvolvingArrayElementType(evolvedType_1, arg); |
| 70534 | } |
| 70535 | } |
| 70536 | else { |
| 70537 | // We must get the context free expression type so as to not recur in an uncached fashion on the LHS (which causes exponential blowup in compile time) |
| 70538 | var indexType = getContextFreeTypeOfExpression(node.left.argumentExpression); |
| 70539 | if (isTypeAssignableToKind(indexType, 296 /* TypeFlags.NumberLike */)) { |
| 70540 | evolvedType_1 = addEvolvingArrayElementType(evolvedType_1, node.right); |
| 70541 | } |
| 70542 | } |
| 70543 | return evolvedType_1 === type ? flowType : createFlowType(evolvedType_1, isIncomplete(flowType)); |
| 70544 | } |
| 70545 | return flowType; |
| 70546 | } |
| 70547 | } |
| 70548 | return undefined; |
| 70549 | } |
| 70550 | function getTypeAtFlowCondition(flow) { |
| 70551 | var flowType = getTypeAtFlowNode(flow.antecedent); |
| 70552 | var type = getTypeFromFlowType(flowType); |
no test coverage detected
searching dependent graphs…