[Issue 16201] When all paths inside a static if return/throw, the portion after static if should be as if "else" were used

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Fri Jun 24 11:33:00 PDT 2016


https://issues.dlang.org/show_bug.cgi?id=16201

--- Comment #6 from Mathias Lang <mathias.lang at sociomantic.com> ---
Should it only work on `static if` level ?

E.g. if you have:

```
void fun(T)(T obj)
{
    throw new Exception("No gun");
    obj.gun;
}
```

Should it have the same behaviour ?
If not, that should be fixable at the same time as issue 14835 (and has the
same prerequisites).

However, it's not trivial to implement either, e.g. consider the following
code:

```
void fun(T)(T obj)
{
    static if (!hasMember(T, "gun")) {
      if (bar)
         goto Label;
      throw new Exception("No gun");
    }
    // This would not be compiled in after the change, resulting in an
    // "undefined label 'Label'" error.
    Label: myFunc();
}
```

--


More information about the Digitalmars-d-bugs mailing list