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

Reply via email to