Skip to content

Commit c21266a

Browse files
committed
introduce helper
1 parent 549ba36 commit c21266a

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/compiler/checker.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16018,8 +16018,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1601816018
return instantiateSignature(signature, createSignatureTypeMapper(signature, typeArguments), /*eraseTypeParameters*/ true);
1601916019
}
1602016020

16021+
function getTypeParametersForMapper(signature: Signature) {
16022+
return sameMap(signature.typeParameters, tp => tp.mapper ? instantiateType(tp, tp.mapper) : tp);
16023+
}
16024+
1602116025
function createSignatureTypeMapper(signature: Signature, typeArguments: readonly Type[] | undefined): TypeMapper {
16022-
return createTypeMapper(sameMap(signature.typeParameters!, tp => tp.mapper ? instantiateType(tp, tp.mapper) : tp), typeArguments);
16026+
return createTypeMapper(getTypeParametersForMapper(signature)!, typeArguments);
1602316027
}
1602416028

1602516029
function getErasedSignature(signature: Signature): Signature {
@@ -34908,7 +34912,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3490834912

3490934913
// Instantiate a generic signature in the context of a non-generic signature (section 3.8.5 in TypeScript spec)
3491034914
function instantiateSignatureInContextOf(signature: Signature, contextualSignature: Signature, inferenceContext?: InferenceContext, compareTypes?: TypeComparer): Signature {
34911-
const context = createInferenceContext(sameMap(signature.typeParameters!, tp => tp.mapper ? instantiateType(tp, tp.mapper) : tp), signature, InferenceFlags.None, compareTypes);
34915+
const context = createInferenceContext(getTypeParametersForMapper(signature)!, signature, InferenceFlags.None, compareTypes);
3491234916
// We clone the inferenceContext to avoid fixing. For example, when the source signature is <T>(x: T) => T[] and
3491334917
// the contextual signature is (...args: A) => B, we want to infer the element type of A's constraint (say 'any')
3491434918
// for T but leave it possible to later infer '[any]' back to A.

0 commit comments

Comments
 (0)