MCPcopy Create free account
hub / github.com/nodejs/node / checkUnmatchedJSDocParameters

Function checkUnmatchedJSDocParameters

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

Source from the content-addressed store, hash-verified

83910 }
83911 }
83912 function checkUnmatchedJSDocParameters(node) {
83913 var jsdocParameters = ts.filter(ts.getJSDocTags(node), ts.isJSDocParameterTag);
83914 if (!ts.length(jsdocParameters))
83915 return;
83916 var isJs = ts.isInJSFile(node);
83917 var parameters = new ts.Set();
83918 var excludedParameters = new ts.Set();
83919 ts.forEach(node.parameters, function (_a, index) {
83920 var name = _a.name;
83921 if (ts.isIdentifier(name)) {
83922 parameters.add(name.escapedText);
83923 }
83924 if (ts.isBindingPattern(name)) {
83925 excludedParameters.add(index);
83926 }
83927 });
83928 var containsArguments = containsArgumentsReference(node);
83929 if (containsArguments) {
83930 var lastJSDocParam = ts.lastOrUndefined(jsdocParameters);
83931 if (isJs && lastJSDocParam && ts.isIdentifier(lastJSDocParam.name) && lastJSDocParam.typeExpression &&
83932 lastJSDocParam.typeExpression.type && !parameters.has(lastJSDocParam.name.escapedText) && !isArrayType(getTypeFromTypeNode(lastJSDocParam.typeExpression.type))) {
83933 error(lastJSDocParam.name, ts.Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_had_an_array_type, ts.idText(lastJSDocParam.name));
83934 }
83935 }
83936 else {
83937 ts.forEach(jsdocParameters, function (_a, index) {
83938 var name = _a.name;
83939 if (excludedParameters.has(index) || ts.isIdentifier(name) && parameters.has(name.escapedText)) {
83940 return;
83941 }
83942 if (ts.isQualifiedName(name)) {
83943 if (isJs) {
83944 error(name, ts.Diagnostics.Qualified_name_0_is_not_allowed_without_a_leading_param_object_1, ts.entityNameToString(name), ts.entityNameToString(name.left));
83945 }
83946 }
83947 else {
83948 errorOrSuggestion(isJs, name, ts.Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name, ts.idText(name));
83949 }
83950 });
83951 }
83952 }
83953 /**
83954 * Check each type parameter and check that type parameters have no duplicate type parameter declarations
83955 */

Callers 1

Calls 10

isArrayTypeFunction · 0.85
getTypeFromTypeNodeFunction · 0.85
errorOrSuggestionFunction · 0.85
errorFunction · 0.70
filterMethod · 0.65
forEachMethod · 0.65
addMethod · 0.65
hasMethod · 0.65
lengthMethod · 0.45

Tested by

no test coverage detected