seems subtle to distinguish between case 3,4: for values 3 or 4, and case (3,4): for an array with the value [3,4]
switch (x) {
case 0:
...
case 1 + 1:
...
}
This will behave in the normal way. But you can also have: switch {
case foo() > 0:
...
case bar() + baz() == s:
...
}
In which case it lowers to the corresponding if-else.