Is there ANY chance we can fix the bitwise operator precedence rules?
Don
nospam at nospam.com
Mon Jun 21 14:15:56 PDT 2010
Jonathan M Davis wrote:
> Sean Kelly wrote:
>
>> Jonathan M Davis Wrote:
>>> In any case, that means that it could be made required to have a control
>>> statement at the end of a case block without having to specify a specific
>>> destination for fallthrough - though I'd prefer "continue switch" over
>>> "goto case" since it's more explicit and less error prone (since there's
>>> no doubt that you didn't intend to put a destination for the goto if you
>>> use "continue switch" instead of a "goto case" without a destination).
>> It's a small thing, but I think "continue switch" could be misleading.
>> Consider this:
>>
>> switch (getState()) {
>> case X:
>> setState(Z);
>> continue switch;
>> case Y:
>> break;
>> case Z:
>> writeln( "done!" );
>> }
>>
>> Having never encountered D before, what would be your interpretation of
>> this code?
>
> I hadn't thought of that. That could be a source of confusion. However,
> since a switch statement isn't a loop, and it's not a construct in any other
> language AFAIK, the person will look it up. Once you've looked it up, I
> don't think that it would be particularly hard to remember what it actually
> does. It's quite clear what's going once you've become familiar with the
> construct and is quite unambiguous in comparison to "goto case" which could
> easily be missing the target case rather than being meant for fallthrough.
>
> So, perhaps it's not immediately intuitive, but many language constructs
> are, and I think that it's fairly clear once you've looked it up. Having
> something like "fallthrough" or "goto next case" would of course be even
> clearer, but those would require new keywords. I still think that "continue
> switch" would be clearer than "goto case" as well as less error prone.
> Personally, I think that the fact that it's less error prone alone makes it
> a better choice even if it were somewhat less clear.
>
> - Jonathan M Davis
But 'goto case XXX' is an extremely rarely encountered construct, that
screams 'Examine this code closely'. So I don't think it needs extra
error checking.
More information about the Digitalmars-d
mailing list