-
Notifications
You must be signed in to change notification settings - Fork 30.5k
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
Use ESLint selectors in custom rules #17572
Conversation
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.
Great stuff! Just a couple of nits for legibility but not critical :)
} | ||
} | ||
// eslint-disable-next-line max-len | ||
'ExpressionStatement[expression.type="CallExpression"][expression.callee.name="assert"][expression.arguments.0.type="BinaryExpression"]': function(node) { |
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.
For the sake of legibility, we could extract this outside of module.exports
and just use [astSelector]
? Your call but I'm not a fan of the run-on line (having the [] beneath each other is a bit more legible IMHO).
} | ||
// Catch common.mustCall(0) | ||
// eslint-disable-next-line max-len | ||
'CallExpression[callee.object.name="common"][callee.property.name="mustCall"][arguments.0.value=0]': report, |
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 could be extracted into a function outside of module.exports
that takes input for the argument position, so something like getAstSelector(pos)
. Then we also don't need to have the run on line.
Pulled selectors out into variables, as requested. |
PR-URL: nodejs#17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: nodejs#17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: nodejs#17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: nodejs#17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Didn't cherry-pick the last commit back to 6.x as it conflicted. |
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
PR-URL: #17572 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
This PR simplifies several of our custom ESLint rules by using selector syntax instead of handwritten functions to identify matching AST nodes.
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passesAffected core subsystem(s)
tools