Simen kjaeraas wrote:
Graham Fawcett <fawc...@uwindsor.ca> wrote:

On Tue, 11 May 2010 22:18:29 +0200, Don wrote:

void foo(bool x)
{
    if (x)
       scope(exit) writeln("exiting");
    writeln("body");
}

Doesn't this do what you want, without changing the language?

void foo(bool x) {
scope(exit) { if (x) writeln("exiting");
    }
    // ...
}

Absolutely. but it is currently possible to write the code Don
wrote, have it compile, and feel that this is completely
pointless. Which it is.

That is, if scope(whatever) is the only thing inside a scope,
something is wrong. D already warns us of other stupid things
we do, and this is a prime candidate.

More importantly, the error message could suggest the appropriate use case (defining a local bool and then swapping if and scope). It's a common pattern that may deserve careful treatment.

Andrei

Reply via email to