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
fix(eslint-plugin): [prefer-optional-chain] address multipart nullish checks false positive #8678
fix(eslint-plugin): [prefer-optional-chain] address multipart nullish checks false positive #8678
Conversation
Thanks for the PR, @kirkwaiblinger! typescript-eslint is a 100% community driven project, and we are incredibly grateful that you are contributing to that community. The core maintainers work on this in their personal time, so please understand that it may not be possible for them to review your work immediately. Thanks again! 🙏 Please, if you or your company is finding typescript-eslint valuable, help us sustain the project by sponsoring it transparently on https://opencollective.com/typescript-eslint. |
✅ Deploy Preview for typescript-eslint ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #8678 +/- ##
==========================================
+ Coverage 87.21% 87.23% +0.01%
==========================================
Files 251 251
Lines 12305 12320 +15
Branches 3880 3884 +4
==========================================
+ Hits 10732 10747 +15
Misses 1303 1303
Partials 270 270
Flags with carried forward coverage won't be shown. Click here to find out more.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
56358a6
into
typescript-eslint:main
… checks false positive (typescript-eslint#8678) Address grouping of operators in chain
… checks false positive (typescript-eslint#8678) Address grouping of operators in chain
PR Checklist
null
andundefined
#8380Overview
Basically the trouble is that the rule checks "am I in a subsequence of logical operands that are candidates for optional chaining that is more than one unit long?", assuming that a nullish check will be the first element in that chain and subsequent elements will be chainable expressions. However, a nullish check such as
a !== null && a !== undefined
takes up more than one element in that subsequence, since it is two comparisons. When checking if the length is greater than 1, we get a false positive.The code change groups the subsequence so that
a !== null && a !== undefined
get treated as a single unit when checking whether to report.my brain hurts.