digitalmars.D.learn - Shouldn't the following code produce a warning?
- ric maicle (27/27) Apr 03 2016 The values of the variables here can be determined during compilation.
- Jonathan M Davis via Digitalmars-d-learn (6/10) Apr 03 2016 Agruably, it should generate a warning, but it doesn't currently. There ...
The values of the variables here can be determined during compilation. Should there be some kind of warning like, unsigned integer may not be compared to a value less than zero; or there shouldn't be since the programmer should have known what he's doing? import std.stdio; void f1() { uint n = 0; uint ans = n - 1u; if (ans < 0) { // warning? writeln("Less than or equal 0."); } else { writeln("Just like C++."); } } void f2() { const uint n = 0; const uint ans = n - 1u; static if (ans < 0) { // warning? writeln("Less than or equal 0."); } else { writeln("Just like C++."); } } void main() { f1(); f2(); }
Apr 03 2016
On Monday, April 04, 2016 13:23:16 ric maicle via Digitalmars-d-learn wrote:The values of the variables here can be determined during compilation. Should there be some kind of warning like, unsigned integer may not be compared to a value less than zero; or there shouldn't be since the programmer should have known what he's doing?Agruably, it should generate a warning, but it doesn't currently. There are these two related bug reports / enhancement requests though: https://issues.dlang.org/show_bug.cgi?id=6949 https://issues.dlang.org/show_bug.cgi?id=259 - Jonathan M Davis
Apr 03 2016