-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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): [no-unnecessary-type-parameters] should parenthesize type in suggestion fixer if necessary #10907
base: main
Are you sure you want to change the base?
fix(eslint-plugin): [no-unnecessary-type-parameters] should parenthesize type in suggestion fixer if necessary #10907
Conversation
Thanks for the PR, @y-hsgw! 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. |
View your CI Pipeline Execution ↗ for commit 4cb399a.
☁️ Nx Cloud last updated this comment at |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #10907 +/- ##
==========================================
+ Coverage 87.43% 87.59% +0.15%
==========================================
Files 468 470 +2
Lines 16040 16101 +61
Branches 4649 4671 +22
==========================================
+ Hits 14025 14103 +78
+ Misses 1658 1642 -16
+ Partials 357 356 -1
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
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.
Thanks! 👍
Wait, was too optimistic - taking a closer look..
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.
Good stuff! I think just a bit of extra testing & code flow trimming are needed now. 🔥
const hasMatchingAncestorType = [ | ||
AST_NODE_TYPES.TSArrayType, | ||
AST_NODE_TYPES.TSIndexedAccessType, | ||
].some(type => referenceNode.parent.parent?.type === type); |
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.
There's a missing code coverage point here, as reported by Codecov. Removing the ?
doesn't fail the test.
It looks to me like another example of #6255 / #10682 where the AST types for parent
nodes aren't precise enough to know the grandparent of an identifier is defined. If that's the case we'll want a !
type assertion and a followup issue. Or, if not, there's a missing unit test for a case that could be hit. Could you please take a look?
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.
Based on my investigation, it seems likely that when reference.isTypeReference
is true
, the type
of reference.identifier.parent
is TSESTree.TSTypeReference
.
I agree that a follow-up might be necessary, as you suggested.
I have added the !
type assertion as well. → 91dd50d
This is just a quick idea, but it seems like we might need some form of type narrowing:
public isTypeReference(): this is Reference & {
identifier: (TSESTree.Identifier | TSESTree.JSXIdentifier) & {
parent: TSESTree.TSTypeReference;
};
} {
return (this.#referenceType & ReferenceTypeFlag.Type) !== 0;
}
If there's no misunderstanding regarding the above, should I create an issue?
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.
[Testing] Just to be thorough, could you add a few tests around:
- Combination
|
union and&
intersection types - Types with unnecessary parenthesis around them (which might need
noFormat
)
They all worked when I tried them out, so this is just for future-proofing.
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.
I added in 4cb399a!
PR Checklist
Overview
Fixed the bug described in the title.
Please note that in addition to the error examples in the #10894, I have also addressed several related cases.
🐛