UNPKG

1.25 kBJavaScriptView Raw
1/**
2 * @fileoverview Rule to disallow a duplicate case label.
3 * @author Dieter Oberkofler
4 * @author Burak Yigit Kaya
5 */
6
7"use strict";
8
9//------------------------------------------------------------------------------
10// Rule Definition
11//------------------------------------------------------------------------------
12
13module.exports = {
14 meta: {
15 docs: {
16 description: "disallow duplicate case labels",
17 category: "Possible Errors",
18 recommended: true,
19 url: "https://eslint.org/docs/rules/no-duplicate-case"
20 },
21
22 schema: [],
23
24 messages: {
25 unexpected: "Duplicate case label."
26 }
27 },
28
29 create(context) {
30 const sourceCode = context.getSourceCode();
31
32 return {
33 SwitchStatement(node) {
34 const mapping = {};
35
36 node.cases.forEach(switchCase => {
37 const key = sourceCode.getText(switchCase.test);
38
39 if (mapping[key]) {
40 context.report({ node: switchCase, messageId: "unexpected" });
41 } else {
42 mapping[key] = switchCase;
43 }
44 });
45 }
46 };
47 }
48};