Skip to content

In plain JS files, only suggest did-you-mean errors #46151

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/compiler/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28412,7 +28412,7 @@ namespace ts {
if (relatedInfo) {
addRelatedInfo(resultDiagnostic, relatedInfo);
}
addErrorOrSuggestion(!isUncheckedJS, resultDiagnostic);
addErrorOrSuggestion(!isUncheckedJS || errorInfo.code !== Diagnostics.Property_0_may_not_exist_on_type_1_Did_you_mean_2.code, resultDiagnostic);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to check if I understand things correctly: considering the unchecked JS scenario, we are now making any diagnostics that are not "did you mean..." become errors instead of suggestions. I'm also assuming errors don't show up intrusively in unchecked JS, whereas suggestions are going to appear as the three grey dots. Is that it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess a related question is: how are errors in unchecked JS surfaced?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's completely non-obvious, but checker errors in JS are squelched entirely. Only suggestions are shown.

That needs to change eventually, at which point this code might need to change. But probably we'll still have an explicit allow-list of errors.

}

function containerSeemsToBeEmptyDomElement(containingType: Type) {
Expand Down
10 changes: 10 additions & 0 deletions tests/cases/fourslash/codeFixSpellingJs9.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/// <reference path='fourslash.ts' />

// @allowjs: true
// @noEmit: true

// @filename: noSuggestionWithoutDidYouMean.js
//// let a = {};
//// console.log(a.apple);
verify.noErrors()
verify.getSuggestionDiagnostics([])