UNPKG

1.98 kBJavaScriptView Raw
1var __extends = (this && this.__extends) || function (d, b) {
2 for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
3 function __() { this.constructor = d; }
4 __.prototype = b.prototype;
5 d.prototype = new __();
6};
7var ErrorTolerantWalker = require('./utils/ErrorTolerantWalker');
8var SyntaxKind = require('./utils/SyntaxKind');
9var Rule = (function (_super) {
10 __extends(Rule, _super);
11 function Rule() {
12 _super.apply(this, arguments);
13 }
14 Rule.prototype.apply = function (sourceFile) {
15 return this.applyWithWalker(new NoDuplicateCaseRuleWalker(sourceFile, this.getOptions()));
16 };
17 Rule.FAILURE_STRING = 'Duplicate case found in switch statement: ';
18 return Rule;
19})(Lint.Rules.AbstractRule);
20exports.Rule = Rule;
21var NoDuplicateCaseRuleWalker = (function (_super) {
22 __extends(NoDuplicateCaseRuleWalker, _super);
23 function NoDuplicateCaseRuleWalker() {
24 _super.apply(this, arguments);
25 }
26 NoDuplicateCaseRuleWalker.prototype.visitSwitchStatement = function (node) {
27 var _this = this;
28 var seenLabels = [];
29 node.caseBlock.clauses.forEach(function (clauseOrDefault) {
30 if (clauseOrDefault.kind === SyntaxKind.current().CaseClause) {
31 var clause = clauseOrDefault;
32 if (clause.expression != null) {
33 var caseText = clause.expression.getText();
34 if (seenLabels.indexOf(caseText) > -1) {
35 _this.addFailure(_this.createFailure(clause.getStart(), clause.getWidth(), Rule.FAILURE_STRING + caseText));
36 }
37 else {
38 seenLabels.push(caseText);
39 }
40 }
41 }
42 });
43 _super.prototype.visitSwitchStatement.call(this, node);
44 };
45 return NoDuplicateCaseRuleWalker;
46})(ErrorTolerantWalker);
47//# sourceMappingURL=noDuplicateCaseRule.js.map
\No newline at end of file