@@ -4164,8 +4164,8 @@ namespace ts {
4164
4164
else {
4165
4165
mapper = createTypeMapper(typeParameters, typeArguments);
4166
4166
members = createInstantiatedSymbolTable(source.declaredProperties, mapper, /*mappingThisOnly*/ typeParameters.length === 1);
4167
- callSignatures = instantiateList (source.declaredCallSignatures, mapper, instantiateSignature );
4168
- constructSignatures = instantiateList (source.declaredConstructSignatures, mapper, instantiateSignature );
4167
+ callSignatures = instantiateSignatures (source.declaredCallSignatures, mapper);
4168
+ constructSignatures = instantiateSignatures (source.declaredConstructSignatures, mapper);
4169
4169
stringIndexInfo = instantiateIndexInfo(source.declaredStringIndexInfo, mapper);
4170
4170
numberIndexInfo = instantiateIndexInfo(source.declaredNumberIndexInfo, mapper);
4171
4171
}
@@ -4363,8 +4363,8 @@ namespace ts {
4363
4363
const symbol = type.symbol;
4364
4364
if (type.target) {
4365
4365
const members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, /*mappingThisOnly*/ false);
4366
- const callSignatures = instantiateList (getSignaturesOfType(type.target, SignatureKind.Call), type.mapper, instantiateSignature );
4367
- const constructSignatures = instantiateList (getSignaturesOfType(type.target, SignatureKind.Construct), type.mapper, instantiateSignature );
4366
+ const callSignatures = instantiateSignatures (getSignaturesOfType(type.target, SignatureKind.Call), type.mapper);
4367
+ const constructSignatures = instantiateSignatures (getSignaturesOfType(type.target, SignatureKind.Construct), type.mapper);
4368
4368
const stringIndexInfo = instantiateIndexInfo(getIndexInfoOfType(type.target, IndexKind.String), type.mapper);
4369
4369
const numberIndexInfo = instantiateIndexInfo(getIndexInfoOfType(type.target, IndexKind.Number), type.mapper);
4370
4370
setStructuredTypeMembers(type, members, callSignatures, constructSignatures, stringIndexInfo, numberIndexInfo);
@@ -6037,6 +6037,14 @@ namespace ts {
6037
6037
return items;
6038
6038
}
6039
6039
6040
+ function instantiateTypes(types: Type[], mapper: TypeMapper) {
6041
+ return instantiateList(types, mapper, instantiateType);
6042
+ }
6043
+
6044
+ function instantiateSignatures(signatures: Signature[], mapper: TypeMapper) {
6045
+ return instantiateList(signatures, mapper, instantiateSignature);
6046
+ }
6047
+
6040
6048
function createUnaryTypeMapper(source: Type, target: Type): TypeMapper {
6041
6049
return t => t === source ? target : t;
6042
6050
}
@@ -6063,7 +6071,6 @@ namespace ts {
6063
6071
count == 2 ? createBinaryTypeMapper(sources[0], targets ? targets[0] : anyType, sources[1], targets ? targets[1] : anyType) :
6064
6072
createArrayTypeMapper(sources, targets);
6065
6073
mapper.mappedTypes = sources;
6066
- mapper.targetTypes = targets;
6067
6074
return mapper;
6068
6075
}
6069
6076
@@ -6190,7 +6197,7 @@ namespace ts {
6190
6197
result.target = type;
6191
6198
result.mapper = mapper;
6192
6199
result.aliasSymbol = type.aliasSymbol;
6193
- result.aliasTypeArguments = mapper.targetTypes ;
6200
+ result.aliasTypeArguments = instantiateTypes(type.aliasTypeArguments, mapper) ;
6194
6201
mapper.instantiations[type.id] = result;
6195
6202
return result;
6196
6203
}
@@ -6266,14 +6273,14 @@ namespace ts {
6266
6273
instantiateAnonymousType(<AnonymousType>type, mapper) : type;
6267
6274
}
6268
6275
if ((<ObjectType>type).objectFlags & ObjectFlags.Reference) {
6269
- return createTypeReference((<TypeReference>type).target, instantiateList ((<TypeReference>type).typeArguments, mapper, instantiateType ));
6276
+ return createTypeReference((<TypeReference>type).target, instantiateTypes ((<TypeReference>type).typeArguments, mapper));
6270
6277
}
6271
6278
}
6272
6279
if (type.flags & TypeFlags.Union && !(type.flags & TypeFlags.Primitive)) {
6273
- return getUnionType(instantiateList ((<UnionType>type).types, mapper, instantiateType ), /*subtypeReduction*/ false, type.aliasSymbol, mapper.targetTypes );
6280
+ return getUnionType(instantiateTypes ((<UnionType>type).types, mapper), /*subtypeReduction*/ false, type.aliasSymbol, instantiateTypes(type.aliasTypeArguments, mapper) );
6274
6281
}
6275
6282
if (type.flags & TypeFlags.Intersection) {
6276
- return getIntersectionType(instantiateList ((<IntersectionType>type).types, mapper, instantiateType ), type.aliasSymbol, mapper.targetTypes );
6283
+ return getIntersectionType(instantiateTypes ((<IntersectionType>type).types, mapper), type.aliasSymbol, instantiateTypes(type.aliasTypeArguments, mapper) );
6277
6284
}
6278
6285
if (type.flags & TypeFlags.Index) {
6279
6286
return getIndexType(instantiateType((<IndexType>type).type, mapper));
0 commit comments