MCPcopy Index your code
hub / github.com/nodejs/node / checkTupleType

Function checkTupleType

test/fixtures/snapshot/typescript.js:80717–80760  ·  view source on GitHub ↗
(node)

Source from the content-addressed store, hash-verified

80715 checkSourceElement(node.elementType);
80716 }
80717 function checkTupleType(node) {
80718 var elementTypes = node.elements;
80719 var seenOptionalElement = false;
80720 var seenRestElement = false;
80721 var hasNamedElement = ts.some(elementTypes, ts.isNamedTupleMember);
80722 for (var _i = 0, elementTypes_1 = elementTypes; _i < elementTypes_1.length; _i++) {
80723 var e = elementTypes_1[_i];
80724 if (e.kind !== 197 /* SyntaxKind.NamedTupleMember */ && hasNamedElement) {
80725 grammarErrorOnNode(e, ts.Diagnostics.Tuple_members_must_all_have_names_or_all_not_have_names);
80726 break;
80727 }
80728 var flags = getTupleElementFlags(e);
80729 if (flags & 8 /* ElementFlags.Variadic */) {
80730 var type = getTypeFromTypeNode(e.type);
80731 if (!isArrayLikeType(type)) {
80732 error(e, ts.Diagnostics.A_rest_element_type_must_be_an_array_type);
80733 break;
80734 }
80735 if (isArrayType(type) || isTupleType(type) && type.target.combinedFlags & 4 /* ElementFlags.Rest */) {
80736 seenRestElement = true;
80737 }
80738 }
80739 else if (flags & 4 /* ElementFlags.Rest */) {
80740 if (seenRestElement) {
80741 grammarErrorOnNode(e, ts.Diagnostics.A_rest_element_cannot_follow_another_rest_element);
80742 break;
80743 }
80744 seenRestElement = true;
80745 }
80746 else if (flags & 2 /* ElementFlags.Optional */) {
80747 if (seenRestElement) {
80748 grammarErrorOnNode(e, ts.Diagnostics.An_optional_element_cannot_follow_a_rest_element);
80749 break;
80750 }
80751 seenOptionalElement = true;
80752 }
80753 else if (seenOptionalElement) {
80754 grammarErrorOnNode(e, ts.Diagnostics.A_required_element_cannot_follow_an_optional_element);
80755 break;
80756 }
80757 }
80758 ts.forEach(node.elements, checkSourceElement);
80759 getTypeFromTypeNode(node);
80760 }
80761 function checkUnionOrIntersectionType(node) {
80762 ts.forEach(node.types, checkSourceElement);
80763 getTypeFromTypeNode(node);

Callers 1

checkSourceElementWorkerFunction · 0.85

Calls 9

grammarErrorOnNodeFunction · 0.85
getTupleElementFlagsFunction · 0.85
getTypeFromTypeNodeFunction · 0.85
isArrayLikeTypeFunction · 0.85
isArrayTypeFunction · 0.85
isTupleTypeFunction · 0.85
someMethod · 0.80
errorFunction · 0.70
forEachMethod · 0.65

Tested by

no test coverage detected