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

Function getTypeAtFlowArrayMutation

test/fixtures/snapshot/typescript.js:70519–70549  ·  view source on GitHub ↗
(flow)

Source from the content-addressed store, hash-verified

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);

Callers 1

getTypeAtFlowNodeFunction · 0.85

Calls 9

isMatchingReferenceFunction · 0.85
getReferenceCandidateFunction · 0.85
getTypeAtFlowNodeFunction · 0.85
getTypeFromFlowTypeFunction · 0.85
isTypeAssignableToKindFunction · 0.85
createFlowTypeFunction · 0.85
isIncompleteFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…