Impressed
Alex Rønne Petersen
alex at lycus.org
Thu Jul 26 21:36:57 PDT 2012
On 27-07-2012 05:32, Ali Çehreli wrote:
> On 07/26/2012 06:58 PM, Stuart wrote:
> > On Friday, 27 July 2012 at 00:23:54 UTC, Ali Çehreli wrote:
>
> > Well, kinda. "Goto case" and such are one thing, but allowing the
> > arbitrary use of goto for jumping around from label to label.... I just
> > don't understand why the language even supports this.
>
> Unlike C++, the language disallows unsafe jumping forward (or is it dmd
> that disallows it?). Hmmm... Maybe I am wrong... (?) I swear, the
> following code used to generate a compilation error:
>
> if (aCondition) {
> goto label; // Jumps over s's constructor call
> }
>
> auto s = S(7);
>
> label:
>
> s.foo();
>
> The error used to say:
>
> "Error: cannot goto forward into different try block level."
>
> The code is allowed by dmd 2.059.
>
> The code is allowed for classes as well but of course there is a
> segmentation faault due to foo() on the null object. Strange...
>
> > Anyone using 'goto
> > label' in their code is doing it wrong. Period.
>
> I agree.
>
> Ali
>
Jumping over initialization isn't as problematic in D because variables
are guaranteed to have a default initialization value (if not
initialized to void). It's worse in languages like C where the value of
variables would be undefined.
--
Alex Rønne Petersen
alex at lycus.org
http://lycus.org
More information about the Digitalmars-d
mailing list