@@ -9614,15 +9614,40 @@ namespace ts {
9614
9614
return getTupleTypeOfArity(node.elementTypes.length, minLength, !!restElement, readonly, /*associatedNames*/ undefined);
9615
9615
}
9616
9616
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
+
9617
9634
function getTypeFromArrayOrTupleTypeNode(node: ArrayTypeNode | TupleTypeNode): Type {
9618
9635
const links = getNodeLinks(node);
9619
9636
if (!links.resolvedType) {
9620
9637
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
+ }
9626
9651
}
9627
9652
return links.resolvedType;
9628
9653
}
0 commit comments