(newType, newMapper)
| 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)); |
no test coverage detected