void foo(bool x)
{
goto END;
uint what;
END:
}
onlineapp.d(15): Error: goto
skips declaration of variable onlineapp.foo.what
goto END;
^
void foo(bool x)
{
{
goto END;
uint what;
}
END:
}
runs fine.
I think it's correct behaviour, if the goto is jumping out of its scope, its OK to skip declarations in that scope, since they cant be accessed outside it.
But the documentation doesn't specify this behaviour. It just says...
"It is illegal for a GotoStatement to be used to skip initializations."
it should say something like "It is illegal for a GotoStatement to be used to skip initializations within its containing scope."