@@ -2229,14 +2229,8 @@ namespace ts {
2229
2229
// The specified symbol flags need to be reinterpreted as type flags
2230
2230
buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, SymbolFlags.Type, SymbolFormatFlags.None, nextFlags);
2231
2231
}
2232
- else if (!(flags & TypeFormatFlags.InTypeAlias) && (( getObjectFlags(type) & ObjectFlags.Anonymous && !(<AnonymousType>type).target) || type.flags & TypeFlags.UnionOrIntersection) && type.aliasSymbol &&
2232
+ else if (!(flags & TypeFormatFlags.InTypeAlias) && (getObjectFlags(type) & ObjectFlags.Anonymous || type.flags & TypeFlags.UnionOrIntersection) && type.aliasSymbol &&
2233
2233
isSymbolAccessible(type.aliasSymbol, enclosingDeclaration, SymbolFlags.Type, /*shouldComputeAliasesToMakeVisible*/ false).accessibility === SymbolAccessibility.Accessible) {
2234
- // We emit inferred type as type-alias at the current localtion if all the following is true
2235
- // the input type is has alias symbol that is accessible
2236
- // the input type is a union, intersection or anonymous type that is fully instantiated (if not we want to keep dive into)
2237
- // e.g.: export type Bar<X, Y> = () => [X, Y];
2238
- // export type Foo<Y> = Bar<any, Y>;
2239
- // export const y = (x: Foo<string>) => 1 // we want to emit as ...x: () => [any, string])
2240
2234
const typeArguments = type.aliasTypeArguments;
2241
2235
writeSymbolTypeReference(type.aliasSymbol, typeArguments, 0, typeArguments ? typeArguments.length : 0, nextFlags);
2242
2236
}
@@ -4164,8 +4158,8 @@ namespace ts {
4164
4158
else {
4165
4159
mapper = createTypeMapper(typeParameters, typeArguments);
4166
4160
members = createInstantiatedSymbolTable(source.declaredProperties, mapper, /*mappingThisOnly*/ typeParameters.length === 1);
4167
- callSignatures = instantiateList (source.declaredCallSignatures, mapper, instantiateSignature );
4168
- constructSignatures = instantiateList (source.declaredConstructSignatures, mapper, instantiateSignature );
4161
+ callSignatures = instantiateSignatures (source.declaredCallSignatures, mapper);
4162
+ constructSignatures = instantiateSignatures (source.declaredConstructSignatures, mapper);
4169
4163
stringIndexInfo = instantiateIndexInfo(source.declaredStringIndexInfo, mapper);
4170
4164
numberIndexInfo = instantiateIndexInfo(source.declaredNumberIndexInfo, mapper);
4171
4165
}
@@ -4363,8 +4357,8 @@ namespace ts {
4363
4357
const symbol = type.symbol;
4364
4358
if (type.target) {
4365
4359
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 );
4360
+ const callSignatures = instantiateSignatures (getSignaturesOfType(type.target, SignatureKind.Call), type.mapper);
4361
+ const constructSignatures = instantiateSignatures (getSignaturesOfType(type.target, SignatureKind.Construct), type.mapper);
4368
4362
const stringIndexInfo = instantiateIndexInfo(getIndexInfoOfType(type.target, IndexKind.String), type.mapper);
4369
4363
const numberIndexInfo = instantiateIndexInfo(getIndexInfoOfType(type.target, IndexKind.Number), type.mapper);
4370
4364
setStructuredTypeMembers(type, members, callSignatures, constructSignatures, stringIndexInfo, numberIndexInfo);
@@ -6043,6 +6037,14 @@ namespace ts {
6043
6037
return items;
6044
6038
}
6045
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
+
6046
6048
function createUnaryTypeMapper(source: Type, target: Type): TypeMapper {
6047
6049
return t => t === source ? target : t;
6048
6050
}
@@ -6069,7 +6071,6 @@ namespace ts {
6069
6071
count == 2 ? createBinaryTypeMapper(sources[0], targets ? targets[0] : anyType, sources[1], targets ? targets[1] : anyType) :
6070
6072
createArrayTypeMapper(sources, targets);
6071
6073
mapper.mappedTypes = sources;
6072
- mapper.targetTypes = targets;
6073
6074
return mapper;
6074
6075
}
6075
6076
@@ -6196,7 +6197,7 @@ namespace ts {
6196
6197
result.target = type;
6197
6198
result.mapper = mapper;
6198
6199
result.aliasSymbol = type.aliasSymbol;
6199
- result.aliasTypeArguments = mapper.targetTypes ;
6200
+ result.aliasTypeArguments = instantiateTypes(type.aliasTypeArguments, mapper) ;
6200
6201
mapper.instantiations[type.id] = result;
6201
6202
return result;
6202
6203
}
@@ -6272,14 +6273,14 @@ namespace ts {
6272
6273
instantiateAnonymousType(<AnonymousType>type, mapper) : type;
6273
6274
}
6274
6275
if ((<ObjectType>type).objectFlags & ObjectFlags.Reference) {
6275
- return createTypeReference((<TypeReference>type).target, instantiateList ((<TypeReference>type).typeArguments, mapper, instantiateType ));
6276
+ return createTypeReference((<TypeReference>type).target, instantiateTypes ((<TypeReference>type).typeArguments, mapper));
6276
6277
}
6277
6278
}
6278
6279
if (type.flags & TypeFlags.Union && !(type.flags & TypeFlags.Primitive)) {
6279
- 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) );
6280
6281
}
6281
6282
if (type.flags & TypeFlags.Intersection) {
6282
- 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) );
6283
6284
}
6284
6285
if (type.flags & TypeFlags.Index) {
6285
6286
return getIndexType(instantiateType((<IndexType>type).type, mapper));
0 commit comments