On 6/24/16 1:54 PM, Andrei Alexandrescu wrote:
On 6/24/16 1:15 PM, Steven Schveighoffer wrote:
The problem that hasn't been made clear is, why can't you just write:

static if(condition)
{
    ... // some code
    return;
}

// some more code

And the answer is, I'm guessing, bug 14835 -- misguided "unreachable
statement" warnings.

Should we mark your bug as a duplicate?

Sorry, the problem is that the code doesn't compile at all if the static
if is false. So I need to insert the "else".

Even with this, I still didn't understand. Now with your example in the bug report, it's clear. Reproducing here:

void fun(T)(T obj)
{
    static if (!hasMember(T, "gun")) throw new Exception("No gun");
    obj.gun;
}

Call with something that doesn't have a gun member, and even without the reachability warnings (no -w switch), it doesn't compile. However, with an else clause, it would compile.

The compiler should not attempt at all to compile the code after the
static if.

Right.

-Steve

Reply via email to