(type, mapper, aliasSymbol, aliasTypeArguments)
| 63648 | return result; |
| 63649 | } |
| 63650 | function instantiateTypeWorker(type, mapper, aliasSymbol, aliasTypeArguments) { |
| 63651 | var flags = type.flags; |
| 63652 | if (flags & 262144 /* TypeFlags.TypeParameter */) { |
| 63653 | return getMappedType(type, mapper); |
| 63654 | } |
| 63655 | if (flags & 524288 /* TypeFlags.Object */) { |
| 63656 | var objectFlags = type.objectFlags; |
| 63657 | if (objectFlags & (4 /* ObjectFlags.Reference */ | 16 /* ObjectFlags.Anonymous */ | 32 /* ObjectFlags.Mapped */)) { |
| 63658 | if (objectFlags & 4 /* ObjectFlags.Reference */ && !type.node) { |
| 63659 | var resolvedTypeArguments = type.resolvedTypeArguments; |
| 63660 | var newTypeArguments = instantiateTypes(resolvedTypeArguments, mapper); |
| 63661 | return newTypeArguments !== resolvedTypeArguments ? createNormalizedTypeReference(type.target, newTypeArguments) : type; |
| 63662 | } |
| 63663 | if (objectFlags & 1024 /* ObjectFlags.ReverseMapped */) { |
| 63664 | return instantiateReverseMappedType(type, mapper); |
| 63665 | } |
| 63666 | return getObjectTypeInstantiation(type, mapper, aliasSymbol, aliasTypeArguments); |
| 63667 | } |
| 63668 | return type; |
| 63669 | } |
| 63670 | if (flags & 3145728 /* TypeFlags.UnionOrIntersection */) { |
| 63671 | var origin = type.flags & 1048576 /* TypeFlags.Union */ ? type.origin : undefined; |
| 63672 | var types = origin && origin.flags & 3145728 /* TypeFlags.UnionOrIntersection */ ? origin.types : type.types; |
| 63673 | var newTypes = instantiateTypes(types, mapper); |
| 63674 | if (newTypes === types && aliasSymbol === type.aliasSymbol) { |
| 63675 | return type; |
| 63676 | } |
| 63677 | var newAliasSymbol = aliasSymbol || type.aliasSymbol; |
| 63678 | var newAliasTypeArguments = aliasSymbol ? aliasTypeArguments : instantiateTypes(type.aliasTypeArguments, mapper); |
| 63679 | return flags & 2097152 /* TypeFlags.Intersection */ || origin && origin.flags & 2097152 /* TypeFlags.Intersection */ ? |
| 63680 | getIntersectionType(newTypes, newAliasSymbol, newAliasTypeArguments) : |
| 63681 | getUnionType(newTypes, 1 /* UnionReduction.Literal */, newAliasSymbol, newAliasTypeArguments); |
| 63682 | } |
| 63683 | if (flags & 4194304 /* TypeFlags.Index */) { |
| 63684 | return getIndexType(instantiateType(type.type, mapper)); |
| 63685 | } |
| 63686 | if (flags & 134217728 /* TypeFlags.TemplateLiteral */) { |
| 63687 | return getTemplateLiteralType(type.texts, instantiateTypes(type.types, mapper)); |
| 63688 | } |
| 63689 | if (flags & 268435456 /* TypeFlags.StringMapping */) { |
| 63690 | return getStringMappingType(type.symbol, instantiateType(type.type, mapper)); |
| 63691 | } |
| 63692 | if (flags & 8388608 /* TypeFlags.IndexedAccess */) { |
| 63693 | var newAliasSymbol = aliasSymbol || type.aliasSymbol; |
| 63694 | var newAliasTypeArguments = aliasSymbol ? aliasTypeArguments : instantiateTypes(type.aliasTypeArguments, mapper); |
| 63695 | return getIndexedAccessType(instantiateType(type.objectType, mapper), instantiateType(type.indexType, mapper), type.accessFlags, /*accessNode*/ undefined, newAliasSymbol, newAliasTypeArguments); |
| 63696 | } |
| 63697 | if (flags & 16777216 /* TypeFlags.Conditional */) { |
| 63698 | return getConditionalTypeInstantiation(type, combineTypeMappers(type.mapper, mapper), aliasSymbol, aliasTypeArguments); |
| 63699 | } |
| 63700 | if (flags & 33554432 /* TypeFlags.Substitution */) { |
| 63701 | var maybeVariable = instantiateType(type.baseType, mapper); |
| 63702 | if (maybeVariable.flags & 8650752 /* TypeFlags.TypeVariable */) { |
| 63703 | return getSubstitutionType(maybeVariable, instantiateType(type.substitute, mapper)); |
| 63704 | } |
| 63705 | else { |
| 63706 | var sub = instantiateType(type.substitute, mapper); |
| 63707 | if (sub.flags & 3 /* TypeFlags.AnyOrUnknown */ || isTypeAssignableTo(getRestrictiveInstantiation(maybeVariable), getRestrictiveInstantiation(sub))) { |
no test coverage detected