(node)
| 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 | */ |
no test coverage detected