shouldn't this code at least trigger a warning?

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Apr 29 02:25:27 PDT 2015


On Wednesday, 29 April 2015 at 06:37:44 UTC, ketmar wrote:
> subj. the code:
>
>   void main () {
>     import std.stdio;
>     char ch = '!';
>     switch (ch) {
>       int n = 42;
>       case '!': writeln(n, ": wow!"); break;
>       default:
>     }
>   }
>
>
> i think that such abomination should:
> 1. be forbidden, or
> 2. trigger a warning, or
> 3. execute initializer anyway.
>
> currently the code is allowed, no warnings triggered, yet `n` is
> uninitialized. and having uninitialized variable without 
> "=void" "should
> not be".

Agreed, this should be an error. Variables declared in one case 
block aren't even visible in other case blocks, this was probably 
an oversight.


More information about the Digitalmars-d-learn mailing list