Skip to content

Commit 59ce29c

Browse files
committed
Share code between between type references and import nodes
1 parent f85cc44 commit 59ce29c

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

src/compiler/checker.ts

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)