Lint Rules

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;
}