Few things

Don Clugston dac at nospam.com.au
Fri Aug 3 08:19:36 PDT 2007


Lionello Lunesu wrote:
>> 7) From the FAQ: 
> 
>> Many people have asked for a requirement that there be a break
>  > between cases in a switch statement, that C's behavior of
>  > silently falling through is the cause of many bugs.
>  > The reason D doesn't change this is for the same reason that
>  > integral promotion rules and operator precedence rules were
>  > kept the same - to make code that looks the same as in C
>  > operate the same. If it had subtly different semantics, it
>  > will cause frustratingly subtle bugs.
> 
>> I agree with both points of view. My idea: calling this
>  > statement differently (like caseof) instead of "switch"
>  > (like in Pascal), so you can change its semantics too,
>  > removing the falling through (you may use the Pascal
>  > semantic too).
> 
> Sorry to hijack your point here, but this got me thinking:
> 
> Why not use "continue" for seeping through to the next case statement? 
> DMD could then complain if a case does not end with 
> break/continue/goto/return and silently insert a assert(0) before each 
> case (the way it does for functions that return a value.)

Doesn't

for (c;;) {
   switch (c) {
   case 'a': continue;
   case 'b': break;
   }
}

already have a meaning?



More information about the Digitalmars-d mailing list