29-May-2014 23:29, Walter Bright пишет:
On 5/29/2014 11:11 AM, Dmitry Olshansky wrote:
Static if is certainly NOT an attribute, it doesn't make any sense.

Yes, it does make sense. It was not an accident that the frontend treats
it as it does, the code to do it was deliberately put there.

With the reason being? I could deliberately put any code anywhere.

The attributes are all designed to affect a block of code - so are
version/debug/staticif - why should they be different?

Because they are different constructs?
static if models if-else, so does the version statement BTW (else version). debug doesn't model if-else. I could see *some* common ground between them.

safe/pure/nogc etc. are different in that they all affect symbols and have no conditional clause, *some* of them even have counterparts (consistency? - I do not see any).

This for instance doesn't work:

static if(1):
    int blah;
else
{}

while this does:

static if(1)
    int blah;
else:


Does it make any sense? To me - no, not at all.
Not every decision must be taken on the grounds of making some code in compiler more straightforward. After all C's #include was so simple to implement and we know where this way leads to.

--
Dmitry Olshansky

Reply via email to