diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 47ea66ff9af92..73cbbd7e83054 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -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 { @@ -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)); diff --git a/tests/cases/fourslash/jsdocParam_suggestion1.ts b/tests/cases/fourslash/jsdocParam_suggestion1.ts new file mode 100644 index 0000000000000..f3c5fca656682 --- /dev/null +++ b/tests/cases/fourslash/jsdocParam_suggestion1.ts @@ -0,0 +1,18 @@ +/// +// @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([]); +