We have been stalled on ESLint 3.8.0 for some time. Current ESLint is 3.13.0. We have been unable to upgrade because of more aggressive reporting on some rules, including indentation. ESLint configuration options and bugfixes are now such that we can reasonably upgrade. PR-URL: https://github.com/nodejs/node/pull/10561 Reviewed-By: Teddy Katz <teddy.katz@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
/**
|
|
* @fileoverview Rule to flag use of an empty block statement
|
|
* @author Nicholas C. Zakas
|
|
*/
|
|
"use strict";
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Requirements
|
|
//------------------------------------------------------------------------------
|
|
|
|
const astUtils = require("../ast-utils");
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Rule Definition
|
|
//------------------------------------------------------------------------------
|
|
|
|
module.exports = {
|
|
meta: {
|
|
docs: {
|
|
description: "disallow empty block statements",
|
|
category: "Possible Errors",
|
|
recommended: true
|
|
},
|
|
|
|
schema: [
|
|
{
|
|
type: "object",
|
|
properties: {
|
|
allowEmptyCatch: {
|
|
type: "boolean"
|
|
}
|
|
},
|
|
additionalProperties: false
|
|
}
|
|
]
|
|
},
|
|
|
|
create(context) {
|
|
const options = context.options[0] || {},
|
|
allowEmptyCatch = options.allowEmptyCatch || false;
|
|
|
|
const sourceCode = context.getSourceCode();
|
|
|
|
return {
|
|
BlockStatement(node) {
|
|
|
|
// if the body is not empty, we can just return immediately
|
|
if (node.body.length !== 0) {
|
|
return;
|
|
}
|
|
|
|
// a function is generally allowed to be empty
|
|
if (astUtils.isFunction(node.parent)) {
|
|
return;
|
|
}
|
|
|
|
if (allowEmptyCatch && node.parent.type === "CatchClause") {
|
|
return;
|
|
}
|
|
|
|
// any other block is only allowed to be empty, if it contains a comment
|
|
if (sourceCode.getComments(node).trailing.length > 0) {
|
|
return;
|
|
}
|
|
|
|
context.report({ node, message: "Empty block statement." });
|
|
},
|
|
|
|
SwitchStatement(node) {
|
|
|
|
if (typeof node.cases === "undefined" || node.cases.length === 0) {
|
|
context.report({ node, message: "Empty switch statement." });
|
|
}
|
|
}
|
|
};
|
|
|
|
}
|
|
};
|