summaryrefslogtreecommitdiff
path: root/tools/eslint-rules/prefer-assert-iferror.js
diff options
context:
space:
mode:
authorShobhit Chittora <chittorashobhit@gmail.com>2017-11-01 01:31:02 +0530
committerRuben Bridgewater <ruben@bridgewater.de>2018-02-07 14:56:01 +0100
commitd797775fb82caae5f721140625dfb0f984ce929e (patch)
treef73c5968567244160d616ad1b65508944bf4981c /tools/eslint-rules/prefer-assert-iferror.js
parentc0762c2f54f80b92f2f5e0f9af51f4c048c53e4f (diff)
downloadandroid-node-v8-d797775fb82caae5f721140625dfb0f984ce929e.tar.gz
android-node-v8-d797775fb82caae5f721140625dfb0f984ce929e.tar.bz2
android-node-v8-d797775fb82caae5f721140625dfb0f984ce929e.zip
tools: add fixer for prefer-assert-iferror.js
PR-URL: https://github.com/nodejs/node/pull/16648 Refs: https://github.com/nodejs/node/issues/16636 Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'tools/eslint-rules/prefer-assert-iferror.js')
-rw-r--r--tools/eslint-rules/prefer-assert-iferror.js23
1 files changed, 21 insertions, 2 deletions
diff --git a/tools/eslint-rules/prefer-assert-iferror.js b/tools/eslint-rules/prefer-assert-iferror.js
index e152874176..399ee7403a 100644
--- a/tools/eslint-rules/prefer-assert-iferror.js
+++ b/tools/eslint-rules/prefer-assert-iferror.js
@@ -5,9 +5,12 @@
'use strict';
+const utils = require('./rules-utils.js');
+
module.exports = {
create(context) {
const sourceCode = context.getSourceCode();
+ var assertImported = false;
function hasSameTokens(nodeA, nodeB) {
const aTokens = sourceCode.getTokens(nodeA);
@@ -20,8 +23,15 @@ module.exports = {
});
}
+ function checkAssertNode(node) {
+ if (utils.isRequired(node, ['assert'])) {
+ assertImported = true;
+ }
+ }
+
return {
- IfStatement(node) {
+ 'CallExpression': (node) => checkAssertNode(node),
+ 'IfStatement': (node) => {
const firstStatement = node.consequent.type === 'BlockStatement' ?
node.consequent.body[0] :
node.consequent;
@@ -30,10 +40,19 @@ module.exports = {
firstStatement.type === 'ThrowStatement' &&
hasSameTokens(node.test, firstStatement.argument)
) {
+ const argument = sourceCode.getText(node.test);
context.report({
node: firstStatement,
message: 'Use assert.ifError({{argument}}) instead.',
- data: { argument: sourceCode.getText(node.test) }
+ data: { argument },
+ fix: (fixer) => {
+ if (assertImported) {
+ return fixer.replaceText(
+ node,
+ `assert.ifError(${argument});`
+ );
+ }
+ }
});
}
}