Expand type references recursively in cache key

This means that `A<B<T, C<U>>>` will include the keys for `B` and `C`
now.
This commit is contained in:
Nathan Shively-Sanders
2017-09-01 09:55:38 -07:00
parent c7b4ed3a91
commit c9d081eed4
+6 -3
View File
@@ -9782,8 +9782,8 @@ namespace ts {
return type.flags & TypeFlags.TypeParameter && !getConstraintFromTypeParameter(<TypeParameter>type);
}
function isTypeReferenceWithGenericArguments(type: Type) {
return getObjectFlags(type) & ObjectFlags.Reference && some((<TypeReference>type).typeArguments, isUnconstrainedTypeParameter);
function isTypeReferenceWithGenericArguments(type: Type): type is TypeReference {
return getObjectFlags(type) & ObjectFlags.Reference && some((<TypeReference>type).typeArguments, t => isUnconstrainedTypeParameter(t) || isTypeReferenceWithGenericArguments(t));
}
/**
@@ -9801,6 +9801,9 @@ namespace ts {
}
result += "=" + index;
}
else if (isTypeReferenceWithGenericArguments(t)) {
result += "<" + getTypeReferenceId(t, typeParameters) + ">";
}
else {
result += "-" + t.id;
}
@@ -10050,7 +10053,7 @@ namespace ts {
getUnionType(types, /*subtypeReduction*/ true);
}
function isArrayType(type: Type): boolean {
function isArrayType(type: Type): type is TypeReference {
return getObjectFlags(type) & ObjectFlags.Reference && (<TypeReference>type).target === globalArrayType;
}