@@ -9115,13 +9115,15 @@ namespace ts {
91159115 return type;
91169116 }
91179117
9118- function createDeferredTypeReference(target: GenericType, node: ArrayTypeNode | TupleTypeNode, mapper?: TypeMapper, aliasSymbol?: Symbol, aliasTypeArguments?: ReadonlyArray<Type>): DeferredTypeReference {
9118+ function createDeferredTypeReference(target: GenericType, node: ArrayTypeNode | TupleTypeNode, mapper?: TypeMapper): DeferredTypeReference {
9119+ const aliasSymbol = getAliasSymbolForTypeNode(node);
9120+ const aliasTypeArguments = getTypeArgumentsForAliasSymbol(aliasSymbol);
91199121 const type = <DeferredTypeReference>createObjectType(ObjectFlags.Reference, target.symbol);
91209122 type.target = target;
91219123 type.node = node;
91229124 type.mapper = mapper;
91239125 type.aliasSymbol = aliasSymbol;
9124- type.aliasTypeArguments = aliasTypeArguments;
9126+ type.aliasTypeArguments = mapper ? instantiateTypes(aliasTypeArguments, mapper) : aliasTypeArguments;
91259127 return type;
91269128 }
91279129
@@ -9639,10 +9641,8 @@ namespace ts {
96399641 links.resolvedType = emptyObjectType;
96409642 }
96419643 else if (isAliasedType(node)) {
9642- const aliasSymbol = getAliasSymbolForTypeNode(node);
9643- const aliasTypeArguments = getTypeArgumentsForAliasSymbol(aliasSymbol);
96449644 links.resolvedType = node.kind === SyntaxKind.TupleType && node.elementTypes.length === 0 ? target :
9645- createDeferredTypeReference(target, node, /*mapper*/ undefined, aliasSymbol, aliasTypeArguments );
9645+ createDeferredTypeReference(target, node, /*mapper*/ undefined);
96469646 }
96479647 else {
96489648 const elementTypes = node.kind === SyntaxKind.ArrayType ? [getTypeFromTypeNode(node.elementType)] : map(node.elementTypes, getTypeFromTypeNode);
@@ -11504,7 +11504,7 @@ namespace ts {
1150411504 let result = links.instantiations!.get(id);
1150511505 if (!result) {
1150611506 const newMapper = createTypeMapper(typeParameters, typeArguments);
11507- result = target.objectFlags & ObjectFlags.Reference ? instantiateDeferredTypeReference( <DeferredTypeReference>type, newMapper) :
11507+ result = target.objectFlags & ObjectFlags.Reference ? createDeferredTypeReference(( <DeferredTypeReference>type).target, (<DeferredTypeReference>type).node , newMapper) :
1150811508 target.objectFlags & ObjectFlags.Mapped ? instantiateMappedType(<MappedType>target, newMapper) :
1150911509 instantiateAnonymousType(target, newMapper);
1151011510 links.instantiations!.set(id, result);
@@ -11638,10 +11638,6 @@ namespace ts {
1163811638 return result;
1163911639 }
1164011640
11641- function instantiateDeferredTypeReference(type: DeferredTypeReference, mapper: TypeMapper): TypeReference {
11642- return createDeferredTypeReference(type.target, type.node, mapper, type.aliasSymbol, instantiateTypes(type.aliasTypeArguments, mapper));
11643- }
11644-
1164511641 function getConditionalTypeInstantiation(type: ConditionalType, mapper: TypeMapper): Type {
1164611642 const root = type.root;
1164711643 if (root.outerTypeParameters) {
0 commit comments