@@ -9614,15 +9614,40 @@ namespace ts {
96149614 return getTupleTypeOfArity(node.elementTypes.length, minLength, !!restElement, readonly, /*associatedNames*/ undefined);
96159615 }
96169616
9617+ function isAliasedType(node: Node): boolean {
9618+ const parent = node.parent;
9619+ switch (parent.kind) {
9620+ case SyntaxKind.ParenthesizedType:
9621+ case SyntaxKind.ArrayType:
9622+ case SyntaxKind.TupleType:
9623+ case SyntaxKind.RestType:
9624+ case SyntaxKind.UnionType:
9625+ case SyntaxKind.IntersectionType:
9626+ case SyntaxKind.IndexedAccessType:
9627+ return isAliasedType(parent);
9628+ case SyntaxKind.TypeAliasDeclaration:
9629+ return true;
9630+ }
9631+ return false;
9632+ }
9633+
96179634 function getTypeFromArrayOrTupleTypeNode(node: ArrayTypeNode | TupleTypeNode): Type {
96189635 const links = getNodeLinks(node);
96199636 if (!links.resolvedType) {
96209637 const target = getArrayOrTupleTargetType(node);
9621- const aliasSymbol = getAliasSymbolForTypeNode(node);
9622- const aliasTypeArguments = getTypeArgumentsForAliasSymbol(aliasSymbol);
9623- links.resolvedType = target === emptyGenericType ? emptyObjectType :
9624- node.kind === SyntaxKind.TupleType && node.elementTypes.length === 0 ? target :
9625- createDeferredTypeReference(target, node, /*mapper*/ undefined, aliasSymbol, aliasTypeArguments);
9638+ if (target === emptyGenericType) {
9639+ links.resolvedType = emptyObjectType;
9640+ }
9641+ else if (isAliasedType(node)) {
9642+ const aliasSymbol = getAliasSymbolForTypeNode(node);
9643+ const aliasTypeArguments = getTypeArgumentsForAliasSymbol(aliasSymbol);
9644+ links.resolvedType = node.kind === SyntaxKind.TupleType && node.elementTypes.length === 0 ? target :
9645+ createDeferredTypeReference(target, node, /*mapper*/ undefined, aliasSymbol, aliasTypeArguments);
9646+ }
9647+ else {
9648+ const elementTypes = node.kind === SyntaxKind.ArrayType ? [getTypeFromTypeNode(node.elementType)] : map(node.elementTypes, getTypeFromTypeNode);
9649+ links.resolvedType = createTypeReference(target, elementTypes);
9650+ }
96269651 }
96279652 return links.resolvedType;
96289653 }
0 commit comments