noUselessSwitchCase (since v12.0.0)
Disallow useless case
in switch
statements.
A switch
statement can optionally have a default
clause.
The default
clause will be still executed only if there is no match in the case
clauses. An empty case
clause that precedes the default
clause is thus useless.
Source: https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-switch-case.md
Examples
Invalid
switch (foo) {
case 0:
default:
break;
case 1:
break;
}
nursery/noUselessSwitchCase.js:2:5 lint/nursery/noUselessSwitchCase FIXABLE ━━━━━━━━━━━━━━━━━━━━━━
✖ Useless case clause.
1 │ switch (foo) {
> 2 │ case 0:
│ ^^^^^^^
3 │ default:
4 │ break;
ℹ because the default clause is present:
1 │ switch (foo) {
2 │ case 0:
> 3 │ default:
│ ^^^^^^^^
> 4 │ break;
│ ^^^^^^
5 │ case 1:
6 │ break;
ℹ Suggested fix: Remove the useless case.
1 1 │ switch (foo) {
2 │ - ····case·0:
3 │ - ····default:
2 │ + ····default:
4 3 │ break;
5 4 │ case 1:
switch (foo) {
default:
case 0:
break;
case 1:
break;
}
nursery/noUselessSwitchCase.js:3:5 lint/nursery/noUselessSwitchCase FIXABLE ━━━━━━━━━━━━━━━━━━━━━━
✖ Useless case clause.
1 │ switch (foo) {
2 │ default:
> 3 │ case 0:
│ ^^^^^^^
> 4 │ break;
│ ^^^^^^
5 │ case 1:
6 │ break;
ℹ because the default clause is present:
1 │ switch (foo) {
> 2 │ default:
│ ^^^^^^^^
3 │ case 0:
4 │ break;
ℹ Suggested fix: Remove the useless case.
1 1 │ switch (foo) {
2 2 │ default:
3 │ - ····case·0:
4 3 │ break;
5 4 │ case 1:
Valid
switch (foo) {
case 0:
break;
default:
break;
}
switch (foo) {
case 0:
break;
}