noDuplicateCase (since v12.0.0)
Disallow duplicate case labels. If a switch statement has duplicate test expressions in case clauses, it is likely that a programmer copied a case clause but forgot to change the test expression.
Source: https://eslint.org/docs/latest/rules/no-duplicate-case
Examples
Invalid
switch (a) {
case 1:
break;
case 1:
break;
default:
break;
}
nursery/noDuplicateCase.js:4:10 lint/nursery/noDuplicateCase ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Duplicate case label.
2 │ case 1:
3 │ break;
> 4 │ case 1:
│ ^
5 │ break;
6 │ default:
ℹ The first similar label is here:
1 │ switch (a) {
> 2 │ case 1:
│ ^
3 │ break;
4 │ case 1:
switch (a) {
case one:
break;
case one:
break;
default:
break;
}
nursery/noDuplicateCase.js:4:10 lint/nursery/noDuplicateCase ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Duplicate case label.
2 │ case one:
3 │ break;
> 4 │ case one:
│ ^^^
5 │ break;
6 │ default:
ℹ The first similar label is here:
1 │ switch (a) {
> 2 │ case one:
│ ^^^
3 │ break;
4 │ case one:
switch (a) {
case "1":
break;
case "1":
break;
default:
break;
}
nursery/noDuplicateCase.js:4:10 lint/nursery/noDuplicateCase ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Duplicate case label.
2 │ case "1":
3 │ break;
> 4 │ case "1":
│ ^^^
5 │ break;
6 │ default:
ℹ The first similar label is here:
1 │ switch (a) {
> 2 │ case "1":
│ ^^^
3 │ break;
4 │ case "1":
Valid
switch (a) {
case 1:
break;
case 2:
break;
default:
break;
}
switch (a) {
case one:
break;
case two:
break;
default:
break;
}
switch (a) {
case "1":
break;
case "2":
break;
default:
break;
}