diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-08-14 05:01:11 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-08-14 05:02:09 +0200 |
commit | 363723fc84f7b8477592e0105aeb331ec9a017af (patch) | |
tree | 29f92724f34131bac64d6a318dd7e30612e631c7 /node_modules/tslint/lib/rules/noEmptyRule.js | |
parent | 5634e77ad96bfe1818f6b6ee70b7379652e5487f (diff) |
node_modules
Diffstat (limited to 'node_modules/tslint/lib/rules/noEmptyRule.js')
-rw-r--r-- | node_modules/tslint/lib/rules/noEmptyRule.js | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/node_modules/tslint/lib/rules/noEmptyRule.js b/node_modules/tslint/lib/rules/noEmptyRule.js index 29a0a496d..48af2183e 100644 --- a/node_modules/tslint/lib/rules/noEmptyRule.js +++ b/node_modules/tslint/lib/rules/noEmptyRule.js @@ -20,36 +20,42 @@ var tslib_1 = require("tslib"); var tsutils_1 = require("tsutils"); var ts = require("typescript"); var Lint = require("../index"); +var ALLOW_EMPTY_CATCH = "allow-empty-catch"; var Rule = (function (_super) { tslib_1.__extends(Rule, _super); function Rule() { return _super !== null && _super.apply(this, arguments) || this; } Rule.prototype.apply = function (sourceFile) { - return this.applyWithFunction(sourceFile, walk); + return this.applyWithFunction(sourceFile, walk, { + allowEmptyCatch: this.ruleArguments.indexOf(ALLOW_EMPTY_CATCH) !== -1, + }); }; + /* tslint:disable:object-literal-sort-keys */ + Rule.metadata = { + ruleName: "no-empty", + description: "Disallows empty blocks.", + descriptionDetails: "Blocks with a comment inside are not considered empty.", + rationale: "Empty blocks are often indicators of missing code.", + optionsDescription: (_a = ["\n If `", "` is specified, then catch blocks are allowed to be empty."], _a.raw = ["\n If \\`", "\\` is specified, then catch blocks are allowed to be empty."], Lint.Utils.dedent(_a, ALLOW_EMPTY_CATCH)), + options: { + type: "string", + enum: [ALLOW_EMPTY_CATCH], + }, + optionExamples: [true, [true, ALLOW_EMPTY_CATCH]], + type: "functionality", + typescriptOnly: false, + }; + /* tslint:enable:object-literal-sort-keys */ + Rule.FAILURE_STRING = "block is empty"; return Rule; }(Lint.Rules.AbstractRule)); -/* tslint:disable:object-literal-sort-keys */ -Rule.metadata = { - ruleName: "no-empty", - description: "Disallows empty blocks.", - descriptionDetails: "Blocks with a comment inside are not considered empty.", - rationale: "Empty blocks are often indicators of missing code.", - optionsDescription: "Not configurable.", - options: null, - optionExamples: [true], - type: "functionality", - typescriptOnly: false, -}; -/* tslint:enable:object-literal-sort-keys */ -Rule.FAILURE_STRING = "block is empty"; exports.Rule = Rule; function walk(ctx) { return ts.forEachChild(ctx.sourceFile, function cb(node) { if (node.kind === ts.SyntaxKind.Block && node.statements.length === 0 && - !isExcludedConstructor(node.parent)) { + !isExcluded(node.parent, ctx.options)) { var start = node.getStart(ctx.sourceFile); // Block always starts with open brace. Adding 1 to its start gives us the end of the brace, // which can be used to conveniently check for comments between braces @@ -61,7 +67,10 @@ function walk(ctx) { return ts.forEachChild(node, cb); }); } -function isExcludedConstructor(node) { +function isExcluded(node, options) { + if (options.allowEmptyCatch && node.kind === ts.SyntaxKind.CatchClause) { + return true; + } return tsutils_1.isConstructorDeclaration(node) && ( /* If constructor is private or protected, the block is allowed to be empty. @@ -71,3 +80,4 @@ function isExcludedConstructor(node) { tsutils_1.hasModifier(node.modifiers, ts.SyntaxKind.PrivateKeyword, ts.SyntaxKind.ProtectedKeyword) || node.parameters.some(tsutils_1.isParameterProperty)); } +var _a; |