It would allow faster (fastest ?) dynamic dispatch.
Comment #1 by aliloko — 2020-12-19T01:59:50Z
For example:
See godbolt output in https://d.godbolt.org/z/7x3Ehd
--------------- switch.d ---------------------
enum LOL
{
a, b, c
}
import core.stdc.stdio;
void dosmthg(LOL l)
{
assert(l >= LOL.a);
assert(l <= LOL.c);
final switch(l) with (LOL)
{
case a: printf("hello");
case b: printf("world");
case c: printf("!!!!");
}
}
----------------------------------------------
The final switch always has a default case that call core.internal.switch_error
I'm not really if this is a good thing or not.
On one hand, it's like a enabled-on-release assertion so a good idea.
On the other hand, it's one more test in a final switch that could assume all values are inside range. Maybe it's better to err on the side of safe.
Comment #2 by aliloko — 2023-12-17T15:09:36Z
Please close this :)
Comment #3 by robert.schadek — 2024-12-13T17:50:30Z