Skip to content

Commit

Permalink
Cherry-pick PR #47959 into release-4.6 (#47962)
Browse files Browse the repository at this point in the history
Component commits:
465042e Only issue @param suggestions with codefixes in TS
Previously, there were 2 JS errors that were issued as suggestions in TS
files. But there was no codefix for these errors, and the errors were
incorrect in TS.

This PR only issues the JS-specific errors on JS files.

4056b38 Minimise test

4fb10f1 Merge branch 'main' into only-suggest-param-codefixes-in-ts

72499ac Merge branch 'main' into only-suggest-param-codefixes-in-ts

Co-authored-by: Nathan Shively-Sanders <nathansa@microsoft.com>
  • Loading branch information
typescript-bot and sandersn committed Feb 19, 2022
1 parent ded20c6 commit ec6ae0f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/compiler/checker.ts
Expand Up @@ -38536,9 +38536,9 @@ namespace ts {
const containsArguments = containsArgumentsReference(node);
if (containsArguments) {
const lastJSDocParam = lastOrUndefined(jsdocParameters);
if (lastJSDocParam && isIdentifier(lastJSDocParam.name) && lastJSDocParam.typeExpression &&
if (isJs && lastJSDocParam && isIdentifier(lastJSDocParam.name) && lastJSDocParam.typeExpression &&
lastJSDocParam.typeExpression.type && !parameters.has(lastJSDocParam.name.escapedText) && !isArrayType(getTypeFromTypeNode(lastJSDocParam.typeExpression.type))) {
errorOrSuggestion(isJs, lastJSDocParam.name, 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, idText(lastJSDocParam.name));
error(lastJSDocParam.name, 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, idText(lastJSDocParam.name));
}
}
else {
Expand All @@ -38547,7 +38547,9 @@ namespace ts {
return;
}
if (isQualifiedName(name)) {
errorOrSuggestion(isJs, name, Diagnostics.Qualified_name_0_is_not_allowed_without_a_leading_param_object_1, entityNameToString(name), entityNameToString(name.left));
if (isJs) {
error(name, Diagnostics.Qualified_name_0_is_not_allowed_without_a_leading_param_object_1, entityNameToString(name), entityNameToString(name.left));
}
}
else {
errorOrSuggestion(isJs, name, Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name, idText(name));
Expand Down
18 changes: 18 additions & 0 deletions tests/cases/fourslash/jsdocParam_suggestion1.ts
@@ -0,0 +1,18 @@
/// <reference path="fourslash.ts" />
// @Filename: a.ts
//// /**
//// * @param options - whatever
//// * @param options.zone - equally bad
//// */
//// declare function bad(options: any): void
////
//// /**
//// * @param {number} obtuse
//// */
//// function worse(): void {
//// arguments
//// }

goTo.file('a.ts')
verify.getSuggestionDiagnostics([]);

0 comments on commit ec6ae0f

Please sign in to comment.