Skip to content

Commit c9d081e

Browse files
committed
Expand type references recursively in cache key
This means that `A<B<T, C<U>>>` will include the keys for `B` and `C` now.
1 parent c7b4ed3 commit c9d081e

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/compiler/checker.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9782,8 +9782,8 @@ namespace ts {
97829782
return type.flags & TypeFlags.TypeParameter && !getConstraintFromTypeParameter(<TypeParameter>type);
97839783
}
97849784

9785-
function isTypeReferenceWithGenericArguments(type: Type) {
9786-
return getObjectFlags(type) & ObjectFlags.Reference && some((<TypeReference>type).typeArguments, isUnconstrainedTypeParameter);
9785+
function isTypeReferenceWithGenericArguments(type: Type): type is TypeReference {
9786+
return getObjectFlags(type) & ObjectFlags.Reference && some((<TypeReference>type).typeArguments, t => isUnconstrainedTypeParameter(t) || isTypeReferenceWithGenericArguments(t));
97879787
}
97889788

97899789
/**
@@ -9801,6 +9801,9 @@ namespace ts {
98019801
}
98029802
result += "=" + index;
98039803
}
9804+
else if (isTypeReferenceWithGenericArguments(t)) {
9805+
result += "<" + getTypeReferenceId(t, typeParameters) + ">";
9806+
}
98049807
else {
98059808
result += "-" + t.id;
98069809
}
@@ -10050,7 +10053,7 @@ namespace ts {
1005010053
getUnionType(types, /*subtypeReduction*/ true);
1005110054
}
1005210055

10053-
function isArrayType(type: Type): boolean {
10056+
function isArrayType(type: Type): type is TypeReference {
1005410057
return getObjectFlags(type) & ObjectFlags.Reference && (<TypeReference>type).target === globalArrayType;
1005510058
}
1005610059

0 commit comments

Comments
 (0)