final switch traps and improvements

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Dec 24 08:01:32 PST 2012


On 12/24/12 2:11 AM, bearophile wrote:
> Recently Ada 2012 was accepted as ISO standard, and on the good Lambda
> the Ultimate blog there is a small thread about it, with an interesting
> post:
>
> http://lambda-the-ultimate.org/node/4661#comment-73731
>
> The post makes two simple valid points, worth considering.
>
> Currently in D this code compiles with no errors:
>
>
> void main() {
> bool b;
> final switch (b) {
> case true:
> break;
> }
> }
>
>
> And gives at run-time:
> core.exception.SwitchError at test(3): No appropriate switch clause found
>
> It's one of my top fifteen bug reports (it was mislabelled as
> enhancement request):
> http://d.puremagic.com/issues/show_bug.cgi?id=5713
>
> In my opinion It's a topic worth discussing and fixing.

Yes, this is a bug in the language design (as much as the "method is 
hidden" exception that I recall we got rid of).

> The simplest solution is to statically disallow "final switch" to
> operate on anything bug enums.

I'd say we eradicate the exception altogether. Again, it reflects 
incompleteness in language's approach. Requiring people to add a

default: {}

whenever they don't care about certain cases is a low price to pay for 
ensuring everybody stays in sync.


Andrei


More information about the Digitalmars-d mailing list