summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorShobhit Chittora <chittorashobhit@gmail.com>2017-11-01 01:31:02 +0530
committerGibson Fahnestock <gibfahn@gmail.com>2018-04-13 03:56:37 +0100
commitd4bccccf2305978d318de6d8950960e664bbdbe1 (patch)
tree4354d69562fa329965254059df44ca49475ccbf3 /tools
parent50bdf0ed78925665d6c1709f5f3e492739127917 (diff)
downloadnode-new-d4bccccf2305978d318de6d8950960e664bbdbe1.tar.gz
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')
-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});`
+ );
+ }
+ }
});
}
}