Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork2.8k
feat(eslint-plugin): [unbound-method] report property signatures with function types#11682
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
feat(eslint-plugin): [unbound-method] report property signatures with function types#11682
Conversation
Thanks for the PR,@ronami! 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 onhttps://opencollective.com/typescript-eslint. |
netlifybot commentedOct 5, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
✅ Deploy Preview fortypescript-eslint ready!
To edit notification comments on pull requests, go to yourNetlify project configuration. |
nx-cloudbot commentedOct 5, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
View yourCI Pipeline Execution ↗ for commit3b98173
☁️Nx Cloud last updated this comment at |
'function foo({ unbound }: { unbound: () => void } = { unbound: () => {} }) {}', | ||
` | ||
function foo( | ||
{ unbound }: { unbound: (this: void) => void } = { unbound: () => {} }, |
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.
To my understanding, this previously valid test is in fact invalid without athis: void
parameter type.
{ | ||
line:5, | ||
messageId:'unbound', | ||
messageId:'unboundWithoutThisAnnotation', |
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.
This is interesting, it seems the rule iterates on union types and reports the first violation:
typescript-eslint/packages/eslint-plugin/src/rules/unbound-method.ts
Lines 263 to 275 in7f5fed7
for(constintersectionPartoftsutils | |
.unionConstituents(services.getTypeAtLocation(node)) | |
.flatMap(unionPart=> | |
tsutils.intersectionConstituents(unionPart), | |
)){ | |
constreported=checkIfMethodAndReport( | |
property.key, | |
intersectionPart.getProperty(property.key.name), | |
); | |
if(reported){ | |
break; | |
} | |
} |
In this case, the union starts with{ unbound: () => string }
, withFoo
being second. Currently,{ unbound: () => string }
doesn't report, which causes the report to come fromFoo
.
This PR made it so{ unbound: () => string }
does trigger a report, which changes the error message accordingly.
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.
Somewhat related:#11683.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@## main #11682 +/- ##======================================= Coverage 90.74% 90.74% ======================================= Files 516 516 Lines 51989 51996 +7 Branches 8588 8591 +3 =======================================+ Hits 47176 47183 +7 Misses 4799 4799 Partials 14 14
Flags with carried forward coverage won't be shown.Click here to find out more.
🚀 New features to boost your workflow:
|
Uh oh!
There was an error while loading.Please reload this page.
PR Checklist
Overview
Waiting for resolution on#3503 (comment) before opening for review.