Skip to content

Commit 6ebc9e3

Browse files
committed
Handle default type arguments case in isDeferredTypeReferenceNode
1 parent e1fd56a commit 6ebc9e3

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/compiler/checker.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11090,7 +11090,7 @@ namespace ts {
1109011090
return errorType;
1109111091
}
1109211092
}
11093-
if (node.kind === SyntaxKind.TypeReference && isDeferredTypeReferenceNode(<TypeReferenceNode>node)) {
11093+
if (node.kind === SyntaxKind.TypeReference && isDeferredTypeReferenceNode(<TypeReferenceNode>node, length(node.typeArguments) !== typeParameters.length)) {
1109411094
return createDeferredTypeReference(<GenericType>type, <TypeReferenceNode>node, /*mapper*/ undefined);
1109511095
}
1109611096
// In a type reference, the outer type parameters of the referenced class or interface are automatically
@@ -11554,11 +11554,11 @@ namespace ts {
1155411554

1155511555
// Return true if the given type reference node is directly aliased or if it needs to be deferred
1155611556
// because it is possibly contained in a circular chain of eagerly resolved types.
11557-
function isDeferredTypeReferenceNode(node: TypeReferenceNode | ArrayTypeNode | TupleTypeNode) {
11558-
return !!getAliasSymbolForTypeNode(node) || isResolvedByTypeAlias(node) &&
11559-
(node.kind === SyntaxKind.ArrayType ?
11560-
mayResolveTypeAlias(node.elementType) :
11561-
some(node.kind === SyntaxKind.TypeReference ? node.typeArguments : node.elementTypes, mayResolveTypeAlias));
11557+
function isDeferredTypeReferenceNode(node: TypeReferenceNode | ArrayTypeNode | TupleTypeNode, hasDefaultTypeArguments?: boolean) {
11558+
return !!getAliasSymbolForTypeNode(node) || isResolvedByTypeAlias(node) && (
11559+
node.kind === SyntaxKind.ArrayType ? mayResolveTypeAlias(node.elementType) :
11560+
node.kind === SyntaxKind.TupleType ? some(node.elementTypes, mayResolveTypeAlias) :
11561+
hasDefaultTypeArguments || some(node.typeArguments, mayResolveTypeAlias));
1156211562
}
1156311563

1156411564
// Return true when the given node is transitively contained in type constructs that eagerly

0 commit comments

Comments
 (0)