MCPcopy Create free account
hub / github.com/nodejs/node / canTailRecurse

Function canTailRecurse

test/fixtures/snapshot/typescript.js:62667–62688  ·  view source on GitHub ↗
(newType, newMapper)

Source from the content-addressed store, hash-verified

62665 // type. Note that recursion is possible only through aliased conditional types, so we only increment the tail
62666 // recursion counter for those.
62667 function canTailRecurse(newType, newMapper) {
62668 if (newType.flags & 16777216 /* TypeFlags.Conditional */ && newMapper) {
62669 var newRoot = newType.root;
62670 if (newRoot.outerTypeParameters) {
62671 var typeParamMapper_1 = combineTypeMappers(newType.mapper, newMapper);
62672 var typeArguments = ts.map(newRoot.outerTypeParameters, function (t) { return getMappedType(t, typeParamMapper_1); });
62673 var newRootMapper = createTypeMapper(newRoot.outerTypeParameters, typeArguments);
62674 var newCheckType = newRoot.isDistributive ? getMappedType(newRoot.checkType, newRootMapper) : undefined;
62675 if (!newCheckType || newCheckType === newRoot.checkType || !(newCheckType.flags & (1048576 /* TypeFlags.Union */ | 131072 /* TypeFlags.Never */))) {
62676 root = newRoot;
62677 mapper = newRootMapper;
62678 aliasSymbol = undefined;
62679 aliasTypeArguments = undefined;
62680 if (newRoot.aliasSymbol) {
62681 tailCount++;
62682 }
62683 return true;
62684 }
62685 }
62686 }
62687 return false;
62688 }
62689 }
62690 function getTrueTypeFromConditionalType(type) {
62691 return type.resolvedTrueType || (type.resolvedTrueType = instantiateType(getTypeFromTypeNode(type.root.node.trueType), type.mapper));

Callers 1

_loop_18Function · 0.85

Calls 4

combineTypeMappersFunction · 0.85
getMappedTypeFunction · 0.85
createTypeMapperFunction · 0.85
mapMethod · 0.65

Tested by

no test coverage detected