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.