www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Shouldn't the following code produce a warning?

reply ric maicle <rmaicle gmail.com> writes:
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
parent Jonathan M Davis via Digitalmars-d-learn writes:
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