@@ -14914,7 +14914,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
14914
14914
const [childTypeParameter = declaration.parent, grandParent] = walkUpParenthesizedTypesAndGetParentAndChild(declaration.parent.parent);
14915
14915
if (grandParent.kind === SyntaxKind.TypeReference && !omitTypeReferences) {
14916
14916
const typeReference = grandParent as TypeReferenceNode;
14917
- const typeParameters = getTypeParametersForTypeReference (typeReference);
14917
+ const typeParameters = getTypeParametersForTypeReferenceOrImport (typeReference);
14918
14918
if (typeParameters) {
14919
14919
const index = typeReference.typeArguments!.indexOf(childTypeParameter as TypeNode);
14920
14920
if (index < typeParameters.length) {
@@ -17932,15 +17932,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
17932
17932
links.resolvedType = errorType;
17933
17933
}
17934
17934
}
17935
-
17936
- if (node.typeArguments && !isErrorType(links.resolvedType)) {
17937
- addLazyDiagnostic(() => {
17938
- const typeParameters = getTypeParametersForTypeAndSymbol(links.resolvedType!, links.resolvedSymbol!);
17939
- if (typeParameters) {
17940
- checkTypeArgumentConstraints(node, typeParameters);
17941
- }
17942
- });
17943
- }
17944
17935
}
17945
17936
return links.resolvedType;
17946
17937
}
@@ -38327,8 +38318,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
38327
38318
return undefined;
38328
38319
}
38329
38320
38330
- function getTypeParametersForTypeReference (node: TypeReferenceNode | ExpressionWithTypeArguments) {
38331
- const type = getTypeFromTypeReference (node);
38321
+ function getTypeParametersForTypeReferenceOrImport (node: TypeReferenceNode | ExpressionWithTypeArguments | ImportTypeNode ) {
38322
+ const type = getTypeFromTypeNode (node);
38332
38323
if (!isErrorType(type)) {
38333
38324
const symbol = getNodeLinks(node).resolvedSymbol;
38334
38325
if (symbol) {
@@ -38348,11 +38339,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
38348
38339
}
38349
38340
}
38350
38341
forEach(node.typeArguments, checkSourceElement);
38351
- const type = getTypeFromTypeReference(node);
38342
+ checkTypeReferenceOrImport(node);
38343
+ }
38344
+
38345
+ function checkTypeReferenceOrImport(node: TypeReferenceNode | ExpressionWithTypeArguments | ImportTypeNode) {
38346
+ const type = getTypeFromTypeNode(node);
38352
38347
if (!isErrorType(type)) {
38353
38348
if (node.typeArguments) {
38354
38349
addLazyDiagnostic(() => {
38355
- const typeParameters = getTypeParametersForTypeReference (node);
38350
+ const typeParameters = getTypeParametersForTypeReferenceOrImport (node);
38356
38351
if (typeParameters) {
38357
38352
checkTypeArgumentConstraints(node, typeParameters);
38358
38353
}
@@ -38374,7 +38369,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
38374
38369
function getTypeArgumentConstraint(node: TypeNode): Type | undefined {
38375
38370
const typeReferenceNode = tryCast(node.parent, isTypeReferenceType);
38376
38371
if (!typeReferenceNode) return undefined;
38377
- const typeParameters = getTypeParametersForTypeReference (typeReferenceNode);
38372
+ const typeParameters = getTypeParametersForTypeReferenceOrImport (typeReferenceNode);
38378
38373
if (!typeParameters) return undefined;
38379
38374
const constraint = getConstraintOfTypeParameter(typeParameters[typeReferenceNode.typeArguments!.indexOf(node)]);
38380
38375
return constraint && instantiateType(constraint, createTypeMapper(typeParameters, getEffectiveTypeArguments(typeReferenceNode, typeParameters)));
@@ -38577,7 +38572,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
38577
38572
}
38578
38573
}
38579
38574
38580
- getTypeFromTypeNode (node);
38575
+ checkTypeReferenceOrImport (node);
38581
38576
}
38582
38577
38583
38578
function checkNamedTupleMember(node: NamedTupleMember) {
0 commit comments