2023-05-03 11:06:20 +02:00
|
|
|
== Why is this an issue?
|
|
|
|
|
2020-06-30 12:47:33 +02:00
|
|
|
include::../description.adoc[]
|
|
|
|
|
2023-05-03 11:06:20 +02:00
|
|
|
=== Noncompliant code example
|
2020-06-30 12:47:33 +02:00
|
|
|
|
2022-02-04 17:28:24 +01:00
|
|
|
[source,javascript]
|
2020-06-30 12:47:33 +02:00
|
|
|
----
|
|
|
|
switch (param) { //missing default clause
|
|
|
|
case 0:
|
|
|
|
doSomething();
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
doSomethingElse();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (param) {
|
|
|
|
default: // default clause should be the last one
|
|
|
|
error();
|
|
|
|
break;
|
|
|
|
case 0:
|
|
|
|
doSomething();
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
doSomethingElse();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
----
|
|
|
|
|
2023-05-03 11:06:20 +02:00
|
|
|
=== Compliant solution
|
2020-06-30 12:47:33 +02:00
|
|
|
|
2022-02-04 17:28:24 +01:00
|
|
|
[source,javascript]
|
2020-06-30 12:47:33 +02:00
|
|
|
----
|
|
|
|
switch (param) {
|
|
|
|
case 0:
|
|
|
|
doSomething();
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
doSomethingElse();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
error();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
----
|
|
|
|
|
2023-05-03 11:06:20 +02:00
|
|
|
=== Exceptions
|
2023-03-30 12:33:09 +02:00
|
|
|
|
|
|
|
The rule ignores ``++switch++`` statements where the discriminant is a TypeScript union and there is a ``++case++`` branch for each constituent.
|
|
|
|
|
|
|
|
[source,javascript]
|
|
|
|
----
|
|
|
|
type Season = 'Spring' | 'Summer' | 'Fall' | 'Winter';
|
|
|
|
let season: Season;
|
|
|
|
switch (season) {
|
|
|
|
case 'Spring':
|
|
|
|
wakeUp();
|
|
|
|
break;
|
|
|
|
case 'Summer':
|
|
|
|
getOut();
|
|
|
|
break;
|
|
|
|
case 'Fall':
|
|
|
|
saveFood();
|
|
|
|
break;
|
|
|
|
case 'Winter':
|
|
|
|
sleep();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
----
|
|
|
|
|
|
|
|
The same applies for TypeScript enums.
|
|
|
|
|
|
|
|
[source,javascript]
|
|
|
|
----
|
|
|
|
enum Direction {
|
|
|
|
Up,
|
|
|
|
Down
|
|
|
|
}
|
|
|
|
|
|
|
|
let dir: Direction;
|
|
|
|
switch (dir) {
|
|
|
|
case Direction.Up:
|
|
|
|
getUp();
|
|
|
|
break;
|
|
|
|
case Direction.Down:
|
|
|
|
getDown();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
----
|
|
|
|
|
2020-06-30 12:47:33 +02:00
|
|
|
include::../see.adoc[]
|
2021-06-02 20:44:38 +02:00
|
|
|
|
2021-06-03 09:05:38 +02:00
|
|
|
ifdef::env-github,rspecator-view[]
|
2021-09-20 15:38:42 +02:00
|
|
|
|
|
|
|
'''
|
|
|
|
== Implementation Specification
|
|
|
|
(visible only on this page)
|
|
|
|
|
|
|
|
include::../message.adoc[]
|
|
|
|
|
2021-06-08 15:52:13 +02:00
|
|
|
'''
|
2021-06-02 20:44:38 +02:00
|
|
|
== Comments And Links
|
|
|
|
(visible only on this page)
|
|
|
|
|
|
|
|
include::../comments-and-links.adoc[]
|
2021-06-03 09:05:38 +02:00
|
|
|
endif::env-github,rspecator-view[]
|