@@ -11090,7 +11090,7 @@ namespace ts {
11090
11090
return errorType;
11091
11091
}
11092
11092
}
11093
- if (node.kind === SyntaxKind.TypeReference && isDeferredTypeReferenceNode(<TypeReferenceNode>node)) {
11093
+ if (node.kind === SyntaxKind.TypeReference && isDeferredTypeReferenceNode(<TypeReferenceNode>node, length(node.typeArguments) !== typeParameters.length )) {
11094
11094
return createDeferredTypeReference(<GenericType>type, <TypeReferenceNode>node, /*mapper*/ undefined);
11095
11095
}
11096
11096
// In a type reference, the outer type parameters of the referenced class or interface are automatically
@@ -11554,11 +11554,11 @@ namespace ts {
11554
11554
11555
11555
// Return true if the given type reference node is directly aliased or if it needs to be deferred
11556
11556
// 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));
11562
11562
}
11563
11563
11564
11564
// Return true when the given node is transitively contained in type constructs that eagerly
0 commit comments