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