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
feat(eslint-plugin): [unbound-method] support constructor binding #1105
Conversation
Thanks for the PR, @sergey-shulyak! 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. As a thank you, your profile/company logo will be added to our main README which receives thousands of unique visitors per day. |
Codecov Report
@@ Coverage Diff @@
## master #1105 +/- ##
==========================================
- Coverage 94.09% 94.07% -0.03%
==========================================
Files 120 120
Lines 5203 5216 +13
Branches 1443 1444 +1
==========================================
+ Hits 4896 4907 +11
- Misses 176 177 +1
- Partials 131 132 +1
|
618badc
to
b6f677c
Compare
case AST_NODE_TYPES.AssignmentExpression: | ||
return isBindCalled(parent.right); |
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.
only doing this on assignment expressions is too strict of a check.
I.e. these cases will be missed.
myFunc(this.clazz.bind(this));
true || this.clazz.bind(this);
return this.clazz.bind(this);
parent.type === AST_NODE_TYPES.CallExpression && | ||
parent.callee.type === AST_NODE_TYPES.MemberExpression && | ||
parent.callee.property.type === AST_NODE_TYPES.Identifier && | ||
parent.callee.property.name === 'bind' |
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 not a strong enough check.
I.e. it will false positive in these cases, which are clearly improperly bound:
this.handleSomething.bind();
this.handleSomething.bind(null);
this.handleSomething.bind(undefined);
fix #636