On Monday, December 05, 2016 05:03:36 Stefan Koch via Digitalmars-d wrote: > On Monday, 5 December 2016 at 04:59:01 UTC, ketmar wrote: > > On Monday, 5 December 2016 at 04:41:55 UTC, Stefan Koch wrote: > >> Hi Guys, > >> What is your opinion, should we warn if we unambiguously > >> detect something that is clearly unwanted ? > >> > >> int fn(int y) > >> { > >> > >> int x = void; > >> ++x; > >> return x+y; > >> > >> } > >> > >> This requires data-flow analysis (The same kind that tells > >> > >> you if you are skipping a statement) > >> And will slow down compilation a little if we enable such a > >> warning. > > > > no need to. if i explicitly wrote `=void` there, i know what i > > am doing. maybe i want that UB. or something. and i tried to > > tell the compiler STFU. please, don't make it harder, and don't > > force me to invent another ways to say STFU. > > Even if you want that ub. > A warning will not halt the compilation.
It will with -w. And even if you build with -wi, it's bad practice to leave warnings in. So, really, we should _never_ warn about anything where it would be reasonable for the programmer to not fix whatever is causing the warning. That being said, if we're dealing with something that is clearly never okay, a warning is fine. And I don't know how anyone can claim that doing something like ++x on a variable that was initialized with null or void is rasonable. But if such a warning were introduced, it would have to be done carefully and only used when it was totally certain that what the programmer was doing was invalid. For instance, taking the address of the variable or passing it to a function would potentially be perfectly fine, whereas calling a member function on it when nothing could have possibly given it a value wouldn't be. Java sometimes gets annoying with how it requires that you initialize a variable before you use it, because its detection simply isn't smart enough, and we don't want to get into a similar boat with D. So, if such detection really _is_ smart enough, then fine, but it should never have false positives, or it's making things worse than they are now. - Jonathan M Davis