@@ -14914,7 +14914,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1491414914 const [childTypeParameter = declaration.parent, grandParent] = walkUpParenthesizedTypesAndGetParentAndChild(declaration.parent.parent);
1491514915 if (grandParent.kind === SyntaxKind.TypeReference && !omitTypeReferences) {
1491614916 const typeReference = grandParent as TypeReferenceNode;
14917- const typeParameters = getTypeParametersForTypeReference (typeReference);
14917+ const typeParameters = getTypeParametersForTypeReferenceOrImport (typeReference);
1491814918 if (typeParameters) {
1491914919 const index = typeReference.typeArguments!.indexOf(childTypeParameter as TypeNode);
1492014920 if (index < typeParameters.length) {
@@ -17932,15 +17932,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1793217932 links.resolvedType = errorType;
1793317933 }
1793417934 }
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- }
1794417935 }
1794517936 return links.resolvedType;
1794617937 }
@@ -38327,8 +38318,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3832738318 return undefined;
3832838319 }
3832938320
38330- function getTypeParametersForTypeReference (node: TypeReferenceNode | ExpressionWithTypeArguments) {
38331- const type = getTypeFromTypeReference (node);
38321+ function getTypeParametersForTypeReferenceOrImport (node: TypeReferenceNode | ExpressionWithTypeArguments | ImportTypeNode ) {
38322+ const type = getTypeFromTypeNode (node);
3833238323 if (!isErrorType(type)) {
3833338324 const symbol = getNodeLinks(node).resolvedSymbol;
3833438325 if (symbol) {
@@ -38348,11 +38339,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3834838339 }
3834938340 }
3835038341 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);
3835238347 if (!isErrorType(type)) {
3835338348 if (node.typeArguments) {
3835438349 addLazyDiagnostic(() => {
38355- const typeParameters = getTypeParametersForTypeReference (node);
38350+ const typeParameters = getTypeParametersForTypeReferenceOrImport (node);
3835638351 if (typeParameters) {
3835738352 checkTypeArgumentConstraints(node, typeParameters);
3835838353 }
@@ -38374,7 +38369,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3837438369 function getTypeArgumentConstraint(node: TypeNode): Type | undefined {
3837538370 const typeReferenceNode = tryCast(node.parent, isTypeReferenceType);
3837638371 if (!typeReferenceNode) return undefined;
38377- const typeParameters = getTypeParametersForTypeReference (typeReferenceNode);
38372+ const typeParameters = getTypeParametersForTypeReferenceOrImport (typeReferenceNode);
3837838373 if (!typeParameters) return undefined;
3837938374 const constraint = getConstraintOfTypeParameter(typeParameters[typeReferenceNode.typeArguments!.indexOf(node)]);
3838038375 return constraint && instantiateType(constraint, createTypeMapper(typeParameters, getEffectiveTypeArguments(typeReferenceNode, typeParameters)));
@@ -38577,7 +38572,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3857738572 }
3857838573 }
3857938574
38580- getTypeFromTypeNode (node);
38575+ checkTypeReferenceOrImport (node);
3858138576 }
3858238577
3858338578 function checkNamedTupleMember(node: NamedTupleMember) {
0 commit comments