From 8fd16baba1e9462513e0ce386fb89ab105a185f2 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 30 Sep 2021 13:12:17 -0700 Subject: [PATCH] suggest primitives instead of wrappers --- src/compiler/checker.ts | 13 ++++++++++--- .../reference/jsdocPropertyTagInvalid.errors.txt | 5 ++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index acd418b93a..c623eb5e63 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2115,16 +2115,23 @@ namespace ts { suggestion = undefined; } if (suggestion) { - const suggestionName = symbolToString(suggestion); + let suggestionName = symbolToString(suggestion); + let elaborate = !!suggestion.valueDeclaration + if ((suggestionName === "String" || suggestionName === "Object" || suggestionName === "Number" || suggestionName === "BigInt" || suggestionName === "Symbol") + && name !== suggestionName.toLowerCase() + && name === (name as string).toLowerCase()) { + suggestionName = suggestionName.toLowerCase() + elaborate = false + } const isUncheckedJS = isUncheckedJSSuggestion(originalLocation, suggestion, /*excludeClasses*/ false); const message = isUncheckedJS ? Diagnostics.Could_not_find_name_0_Did_you_mean_1 : Diagnostics.Cannot_find_name_0_Did_you_mean_1; const diagnostic = createError(errorLocation, message, diagnosticName(nameArg!), suggestionName); addErrorOrSuggestion(!isUncheckedJS, diagnostic); - if (suggestion.valueDeclaration) { + if (elaborate) { addRelatedInfo( diagnostic, - createDiagnosticForNode(suggestion.valueDeclaration, Diagnostics._0_is_declared_here, suggestionName) + createDiagnosticForNode(suggestion.valueDeclaration!, Diagnostics._0_is_declared_here, suggestionName) ); } } diff --git a/tests/baselines/reference/jsdocPropertyTagInvalid.errors.txt b/tests/baselines/reference/jsdocPropertyTagInvalid.errors.txt index 46f8efe161..e265271517 100644 --- a/tests/baselines/reference/jsdocPropertyTagInvalid.errors.txt +++ b/tests/baselines/reference/jsdocPropertyTagInvalid.errors.txt @@ -1,4 +1,4 @@ -/a.js(3,15): error TS2552: Cannot find name 'sting'. Did you mean 'String'? +/a.js(3,15): error TS2552: Cannot find name 'sting'. Did you mean 'string'? ==== /a.js (1 errors) ==== @@ -6,8 +6,7 @@ * @typedef MyType * @property {sting} [x] ~~~~~ -!!! error TS2552: Cannot find name 'sting'. Did you mean 'String'? -!!! related TS2728 /.ts/lib.es5.d.ts:530:13: 'String' is declared here. +!!! error TS2552: Cannot find name 'sting'. Did you mean 'string'? */ /** @param {MyType} p */