On Monday, 9 May 2016 at 18:37:10 UTC, Xinok wrote:
(1) Yes, emit a warning for this case.
(2) Generalize it to all variables, like Nordlöw suggested.
(3) Generalize it to all comparisons as well, including < and >
.
(4) While we're at it, let's also emit a warning when comparing
signed and unsigned types.
(5) Dare I say it... warn against implicit conversions of
double to float.
(6) The same applies to "real" as well.
All of these scenarios are capable of producing "incorrect"
results, are a source of discrete bugs (often corner cases that
we failed to consider and test), and can be hard to detect.
It's about time we stopped being stubborn and flagged these
things as warnings. Even if they require a special compiler
flag and are disabled by default, that's better than nothing.
(1) is good, because the code in question is always wrong.
(2) is a logical extension, in those cases where constant folding
and VRP can prove that the code is always wrong.
(3) Makes no sense though; inequalities with mixed floating-point
types are perfectly safe. (Well, as safe as any floating-point
code can be, anyway.)
(4) is already planned; it's just taking *a lot* longer than
anticipated to actually implement it:
https://issues.dlang.org/show_bug.cgi?id=259
https://github.com/dlang/dmd/pull/1913
https://github.com/dlang/dmd/pull/5229