A code example that shows why I don't like warnings
Adam D. Ruppe
destructionator at gmail.com
Fri Oct 18 16:38:38 UTC 2019
Consider this code:
-----
string defaultFormat(alias method)() {
static foreach(attr; __traits(getAttributes, method))
static if(is(typeof(attr) == string))
return attr;
return "default";
}
void test() {}
@("test") void test2() {}
pragma(msg, defaultFormat!test);
pragma(msg, defaultFormat!test2);
void main() {}
-----
If you compile that with warnings enabled, you will get
Warning: statement is not reachable
on test, but on test2, that very *same code* it complains about
is executed. If you remove it, it errors on the other test2
condition!
I know it is possible to refactor the attribute thing into a
function (like phobos' getAttribute), but nevertheless, this kind
of early return in a loop is a common enough pattern that I don't
think the compiler should warn on.
I almost put this in the "Learn" forum asking for techniques, but
really, I know how to refactor it already. I am more complaining
about the compiler here :)
basically not a lot to say, just wanna make sure code like this
is on the dev's radar if they ever revisit those warnings.
More information about the Digitalmars-d
mailing list