@@ -9115,13 +9115,15 @@ namespace ts {
9115
9115
return type;
9116
9116
}
9117
9117
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);
9119
9121
const type = <DeferredTypeReference>createObjectType(ObjectFlags.Reference, target.symbol);
9120
9122
type.target = target;
9121
9123
type.node = node;
9122
9124
type.mapper = mapper;
9123
9125
type.aliasSymbol = aliasSymbol;
9124
- type.aliasTypeArguments = aliasTypeArguments;
9126
+ type.aliasTypeArguments = mapper ? instantiateTypes(aliasTypeArguments, mapper) : aliasTypeArguments;
9125
9127
return type;
9126
9128
}
9127
9129
@@ -9639,10 +9641,8 @@ namespace ts {
9639
9641
links.resolvedType = emptyObjectType;
9640
9642
}
9641
9643
else if (isAliasedType(node)) {
9642
- const aliasSymbol = getAliasSymbolForTypeNode(node);
9643
- const aliasTypeArguments = getTypeArgumentsForAliasSymbol(aliasSymbol);
9644
9644
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);
9646
9646
}
9647
9647
else {
9648
9648
const elementTypes = node.kind === SyntaxKind.ArrayType ? [getTypeFromTypeNode(node.elementType)] : map(node.elementTypes, getTypeFromTypeNode);
@@ -11504,7 +11504,7 @@ namespace ts {
11504
11504
let result = links.instantiations!.get(id);
11505
11505
if (!result) {
11506
11506
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) :
11508
11508
target.objectFlags & ObjectFlags.Mapped ? instantiateMappedType(<MappedType>target, newMapper) :
11509
11509
instantiateAnonymousType(target, newMapper);
11510
11510
links.instantiations!.set(id, result);
@@ -11638,10 +11638,6 @@ namespace ts {
11638
11638
return result;
11639
11639
}
11640
11640
11641
- function instantiateDeferredTypeReference(type: DeferredTypeReference, mapper: TypeMapper): TypeReference {
11642
- return createDeferredTypeReference(type.target, type.node, mapper, type.aliasSymbol, instantiateTypes(type.aliasTypeArguments, mapper));
11643
- }
11644
-
11645
11641
function getConditionalTypeInstantiation(type: ConditionalType, mapper: TypeMapper): Type {
11646
11642
const root = type.root;
11647
11643
if (root.outerTypeParameters) {
0 commit comments